ویرگول
ورودثبت نام
آرمان
آرمانیک برنامه نویس که هرآنچه را که یاد میگیرد در دفترچه یادداشت ویرگولیش یادداشت میکرد(!) حتی یک خط ! تا درصورت نیاز به آن رجوع کند...
آرمان
آرمان
خواندن ۲ دقیقه·۶ سال پیش

نوشتن تست واحد برای 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("Hello, world!", component.Find("h1").InnerText); // Assert text in the body Assert.Contains("Welcome to your new app.", component.GetMarkup()); // Assert if survey component exists Assert.NotNull(component.Find(".alert.alert-secondary")); // Assert the link Assert.Equal( "https://go.microsoft.com/fwlink/?linkid=2127996", component.Find("a").Attributes["href"].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 = "Test" var parameters = new Dictionary<string, object>() { { "Title", title } }; var component = host.AddComponent<SurveyPrompt>(parameters); Assert.Equal(title, component.Find("strong").InnerText); } } }


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

تمام.

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

https://xunit.net/docs/comparisons


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


کلام آخر

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

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