آرمان
آرمان
خواندن ۲ دقیقه·۴ سال پیش

نوشتن تست واحد برای Blazor WebAssembly

مقدمه

برای تست من از xUnit استفاده میکنم.

ابتدا این پروژه را دانلود کنید.

آماده سازی Solution

اول پروژه Blazor Web Assembly و xUnit می سازیم.

سپس پروژه ای که دانلود کردیم رو با استفاده از add existing project به solution خودمون اضافه میکنم.

و بعد رفرنس Server را و پروژه ای که اضافه کردیم را اضافه میکنم:

نکته: چون server درون خودش به Client و Shared رفرنس دارد نیازی به تیک زدن آن پروژه ها نیست.

نکته: مطمئن بشید که تمام NuGet پکیج ها کامل دانلود شده باشند.

خوب آماده سازی Solution تمام شد!


نحوه کار کردن

کلاس TestHost: کار این کلاس رندر کردن کامپوننت های Blazor هست.


یک نمونه ای از تست:

using System; using Xunit; namespace DevOpsBlazor.UnitTests { public class IndexPageUnitTests { TestHost host = new TestHost(); [Fact] public void ShouldRenderHello() { var component = host.AddComponent<Web.Client.Pages.Index>(); // Assert h1 Assert.Equal(&quotHello, world!&quot, component.Find(&quoth1&quot).InnerText); // Assert text in the body Assert.Contains(&quotWelcome to your new app.&quot, component.GetMarkup()); // Assert if survey component exists Assert.NotNull(component.Find(&quot.alert.alert-secondary&quot)); // Assert the link Assert.Equal( &quothttps://go.microsoft.com/fwlink/?linkid=2127996&quot, component.Find(&quota&quot).Attributes[&quothref&quot].Value); } } }


کار کردن با پارامتر ها

کامپوننت SurveyPrompt که در Index Component به کار رفته ، دارای یک Parameter می باشد (با نام Title) برای همین باید جدا تست کنیم.

using Microsoft.AspNetCore.Components.Testing; using System; using System.Collections.Generic; using System.Text; using Xunit; namespace DevOpsBlazor.UnitTests { public class SurveyPromptUnitTests { TestHost host = new TestHost(); [Fact] public void ShouldRenderTitle() { var title = &quotTest&quot var parameters = new Dictionary<string, object>() { { &quotTitle&quot, title } }; var component = host.AddComponent<SurveyPrompt>(parameters); Assert.Equal(title, component.Find(&quotstrong&quot).InnerText); } } }


همانطور که در کد بالا می بینید ما پارامتر رو به کامپوننت پاس دادیم. نتیجه آن:

تمام.

این هم یک Cheat sheet مانند از xUnit

https://xunit.net/docs/comparisons


و در نهایت منبع


کلام آخر

هدف من از این آموزش آماده سازی solution بود. اگر می خواهید تست ها پیچیده تر بنویسید مثلا استفاده از Private method ها ، استفاده از Dependency Injection و ... قسمت دوم آموزش و قسمت های بعد از آن را حتما ببینید.

blazorunit test
یک برنامه نویس که هرآنچه را که یاد میگیرد در دفترچه یادداشت ویرگولیش یادداشت میکرد(!) حتی یک خط ! تا درصورت نیاز به آن رجوع کند...
شاید از این پست‌ها خوشتان بیاید