簡體   English   中英

MOQ 單元測試錯誤。 預期在模擬上調用一次,但為 0 次

[英]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.

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