模拟.设置它.是任何还是它.而是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" });

如果我不使用它,下面的数据是空的。是任何还是它。

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类型的任何值。你可以在这里阅读

最新更新