繁体   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