目錄介紹
背景使用**
興趣點
給出了如何經常使用
moq以及如何改進這種工作方式的解釋。
如果您對
.net core
中的xunit
,模擬和固定裝置
(fixtures
)有一定的經驗,這將非常有幫助。此處顯示的測試是針對
.net core
編寫的,但是大多數**都可以在使用其他單元測試框架的情況下使用。如果您不熟悉固定裝置
(fixtures
),建議閱讀
這篇文章
。如果您不熟悉
moq,建議閱讀
此文章。
我們從要測試的**開始:
使用
autofixture.automoq
(nuget
軟體包在此處
)可以輕鬆進行單元測試。使用測試的安排
(arrange
)部分中的
freeze
方法建立模擬並進行驗證,並使用
verify
方法在測試結束時進行模擬。
在兩者之間呼叫
create
方法以建立包含我們要測試的方法的例項。**如下所示:
[fact]
public async task gettest()
另外,我們可以建立乙個整合測試(而不是僅乙個單元測試),該整合測試僅解析
startup
類中設定的所有依賴項,並替換我們要模擬的單個依賴項。主要優點是我們可以獲得更好的**覆蓋率(因為
startup
類和program
類被觸發)。主要缺點是我們的隔離度較低,因此通常不會替代單元測試。可以使用
integrationfixture
(nuget
包)完成,這就是**的樣子:
[fact]
public async task gettestfreeze()
}
這段**看起來不錯,但是在兩個測試中都出錯了。我們沒有驗證是否對模擬進行了其他任何呼叫。這聽起來可能無關緊要,但事實並非如此。其他呼叫可能僅引起***,而***通常是導致生產問題的主要原因。這是兩個測試結束時所需的額外**:
service.verifynoothercalls();
很容易忘記這一點。
moq 4.7
自動附帶了
autofixture.automoq
不支援此方法的檔案。為了能夠呼叫它,需要單獨安裝乙個更新的版本(至少
4.8)。此外,
moq版本本身沒有附帶
integrationfixture
,因此對於這種情況,您需要單獨安裝。這種方法確實有助於防止***,但很容易忘記。如果您想檢視所有**:它
github上。
我很難學到這種方法。我發現了乙個由實際***引起的實際生產問題,以防萬一我會使用
verifynoothercalls
方法。希望本文能幫助您避免犯同樣的錯誤。
被遺忘的角落有著被遺忘的人
如不是我變了模樣。便是你淡忘了時光。為自己的心門上了鎖。從此再也無人能愉悅。最怕此生決定忘記你,卻突然得到你的訊息。如果我的手不小心碰著你的手,你是會躲開,還是下意識牽住。能駕馭你的人,其實就是你心甘情願,視如生命愛的人。最好的時光,就是你喜歡我,我也喜歡你,可我們都還沒表白。非主流個性簽名 願意委...
被遺忘的Rotor
2002年3月27日,ms發布了shared source mon language infrastructure beta 1 接著,在2002年11月5日發布shared source mon language infrastructure 1.0。shared source cli的 名叫 r...
被遺忘的知識 showModalDialog
window.showmodaldialog 方法用來建立乙個顯示html內容的模態對話方塊。vreturnvalue window.showmodaldialog surl varguments sfeatures surl 必選引數,型別 字串。用來指定對話方塊要顯示的文件的url vargum...