[英]MOQ Unit testing error. Expected invocation on the mock once, but was 0 times
我知道這個問題以前在這里被問過,但我很困惑為什么這個測試失敗了。 這是我正在運行的測試:
public void SubmitWebservicePurchaseOrder_Calls_addQuickAddItemListToPO()
{
var input = new PurchaseOrderWebserviceSubmitDTO();
_service.SubmitWebservicePurchaseOrder(input);
var dict = It.IsAny<Dictionary<long, QuickAddOrCSVLineItem>>();
_purchaseOrderMock.Verify(x => x.addQuickAddItemListToPO(It.IsAny<long>(), It.Is<bool>(y => y == false), ref dict), Times.Once);
}
這是錯誤所說的:
Result Message:
Moq.MockException :
Expected invocation on the mock once, but was 0 times: x => x.addQuickAddItemListToPO(It.IsAny<Int64>(), It.Is<Boolean>(y => y == False), .dict)
No setups configured.
Performed invocations:
IPurchaseOrders.CreateNewPO(OMS.DataLayer.poHeader)
IPurchaseOrders.addQuickAddItemListToPO(0, False, System.Collections.Generic.Dictionary`2[System.Int64,OMS.DataServices.QuickAddOrCSVLineItem])
IPurchaseOrders.GetPOHeaderInfoWithUserToken(0, 00000000, 00000000)
函數SubmitWebservicePurchaseOrder
肯定會調用addQuickAddItemListToPO
,但我仍然收到此錯誤...有人知道為什么嗎? 我以前很少使用 MOQ,也不確定如何調試...
verify 檢查是否已調用 Mocked 函數,Moq 函數需要設置為被調用的測試。 您似乎正在嘗試測試是否正在調用 X 上實現的函數。
找出問題后, addQuickAddItemListToPO
上的ref
參數沒有正確傳入/被讀取為 null。 一旦我更新了我的 MOQ 庫並將參數更改為ref It.Ref<Dictionary<long, QuickAddOrCSVLineItem>>.IsAny
,測試就通過了。
很抱歉沒有發布更多代碼人員,我認為我發布的內容足以讓那里的人提供幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.