【发布时间】:2016-08-31 06:53:20
【问题描述】:
您好,当我看到这段代码时,我已经使用 moq 有一段时间了。
我必须在我的一个回购中设置回报。
mockIRole.Setup(r => r.GetSomething(It.IsAny<Guid>(), It.IsAny<Guid>(),
It.IsAny<Guid>())).Returns(ReturnSomething);
我有三个参数,我只是在网上的一篇文章或博客中看到这些。
It.Is<> 或 It.IsAny<> 对对象有什么用?如果我可以使用Guid.NewGuid() 或其他类型,那么为什么要使用It.Is?
很抱歉,我不确定我的问题是否正确,或者我是否缺少一些测试知识。 不过好像都没什么问题。
【问题讨论】:
-
It.IsAny<Guid>()表示您不关心传递了什么参数。Guid.NewGuid()表示您希望设置方法以仅在第一个参数等于此新 GUID 时才返回。 -
我不知道你在问什么。 Moq 是说,只要传入正确的类型,调用就有效并且应该返回您的对象。
-
It.Is<>有助于确保您使用参数中的正确值调用依赖项 -
我见过初级开发人员尝试使用
It.IsAny<int>()为测试用例生成变量。它不起作用 :) 我还看到很多懒惰的测试编写者使用It.IsAny来处理所有事情,因为他们无法弄清楚要使用的实际变量..
标签: c# unit-testing testing mocking moq