簡體   English   中英

mock.setup It.IsAny 或 It.Is 代替 new object()

[英]mock.setup It.IsAny or It.Is instead new object()

它如何與下面的示例一起使用?

mock.Setup(p => p.GetUCByOrgNumberAsync(It.IsAny<UCPartyModel>))).ReturnsAsync(new PartyUCBusinessDTO() { Orgnr = "xxxxxxxx" });

但不是:

mock.Setup(p => p.GetUCByOrgNumberAsync(new UCPartyModel())).ReturnsAsync(new PartyUCBusinessDTO() { Orgnr = "xxxxxxxx" });

如果我不使用 It.IsAny 或 It.Is,下面的數據為空

    private IActionResult CreateResult<T>(T data)
    {
        return CreateResult<T>(200, data);
    }

new UCPartyModel()正在為設置創建模型的新實例,因此當設置模擬時,傳遞的對象與設置中定義的對象不同,這就是它不起作用的原因。 因此,您可以使用It.IsAny<UCPartyModel>或以下方法。

var model = new UCPartyModel();
mock.Setup(p => p.GetUCByOrgNumberAsync(model).ReturnsAsync(new PartyUCBusinessDTO() { Orgnr = "xxxxxxxx" });
 // Your code of invocation.
someBusinessObj.Run(model);

在上面,您傳遞了相同的對象實例,因此將調用實際的 Setup 方法。

有關It.IsAny<TValue>的更多詳細信息

它匹配給定 TValue 類型的任何值。 你可以在這里閱讀

暫無
暫無

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

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