簡體   English   中英

在模擬對象上調用預期方法后,如何立即傳遞單元測試?

[英]How can I pass a unit test immediately after an expected method is called on the mock object?

使用帶有模擬對象的Rhino.Mocks時:

有沒有辦法在調用預期方法后調用單元測試而不調用此預期方法后執行行?

謝謝

從RhinoMocks 3.5開始,你可以使用漂亮的AssertWasCalled()

this.Service.BuldMessage("messageId");
this.Service.AssertWasCalled(x => x.GenerateMessage("messageId"), messageId));

編輯:回答評論

RhinoMock不負責更改測試執行流程,因此您必須使用NUnit斷言, Assert.Pass()實用程序方法允許您立即結束測試,將其記錄為成功:

if (this.Service.AssertWasCalled(...)))
{
   Assert.Pass("well done");
}

PS:正如其他人建議的那樣考慮重新進行單元測試,這迫使你做出這樣的條件測試退出。

您可以在AssertWasCalled()使用AssertWasCalled()

如果調用該方法並且不應運行以下行,則期望測試應該停止意味着您已將測試寫錯了。 將斷言(Nunit或其他)作為測試的最后一行並拆分測試。 你可能正在測試兩件事,那不是單元測試。 在測試中沒有這種分支流程。 應該執行測試中的所有行。 理想情況下,每個測試應該只有一個斷言。

根據您期望的那種流程,您也會失去從測試失敗時獲得的反饋。 通過查看測試名稱,您不知道失敗了什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM