日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hello Blazor:(15)使用bUnit进行单元测试

發(fā)布時間:2023/12/4 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hello Blazor:(15)使用bUnit进行单元测试 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

bUnit介紹

bUnit是Blazor組件測試庫。其目標(biāo)是使編寫全面、穩(wěn)定的單位測試變得容易。有了bUnit,你可以:

  • 使用C#或Razor語法設(shè)置和定義測試下的組件

  • 使用語義HTML比較器驗證結(jié)果

  • 與組件以及觸發(fā)事件處理程序進(jìn)行交互和檢查

  • 傳遞參數(shù)、級聯(lián)值并將服務(wù)注入測試組件

  • 模擬IJSRuntime,認(rèn)證和授權(quán)等

bUnit是建立在現(xiàn)有單元測試框架(如xUnit、NUnit和MSTest)基礎(chǔ)上的,這些框架以與任何正常單元測試相同的方式運行Blazor組件測試。與通常需要幾秒鐘才能運行的基于瀏覽器的UI測試相比,bUnit在毫秒內(nèi)運行測試。

基本使用

創(chuàng)建一個Blazor WebAssembly 項目,然后添加一個xUnit測試項目。

在測試項目中引用Nuget包bUnit。

首先,讓測試類繼承TestContext,然后編寫測試用例:

public?class?UnitTest1?:?TestContext {[Fact]public?void?Test1(){var?cut?=?RenderComponent<Counter>();cut.Find("button").Click();cut.Find("p").MarkupMatches("<p>Current?count:?1</p>");} }

此測試用例通過RenderComponent方法呈現(xiàn)Counter組件,然后找到組件呈現(xiàn)的按鈕并執(zhí)行按鈕的Click方法,最后,驗證p元素是否與預(yù)期標(biāo)記匹配。

模擬IJSRuntime

Blazor組件通常需要調(diào)用JavaScript,而在單元測試中,我們并不會運行JavaScript,因此bUnit需要模擬IJSRuntime。

假設(shè)組件代碼如下:

@inject?IJSRuntime?JSRuntime <button?@onclick=ButtonClicked>Click</button> @code {private?async?Task?ButtonClicked(){await?JSRuntime.InvokeVoidAsync("alert",?"My?IO");} }

然后編寫測試用例:

[Fact] public?void?Test1() {var?cut?=?RenderComponent<WebApplication20.Pages.Index>();JSInterop.SetupVoid("alert",?"My?IO");cut.Find("button").Click(); }

和普通測試用例唯一的不同,我們驗證了IJSRuntime會調(diào)用alert方法并傳入指定參數(shù):

JSInterop.SetupVoid("alert",?"My?IO");

結(jié)論

使用bUnit,我們無需啟動Blazor應(yīng)用,即可進(jìn)行組件測試。

總結(jié)

以上是生活随笔為你收集整理的Hello Blazor:(15)使用bUnit进行单元测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。