假设我有一个包含方法public int Add(int, int)
的模拟器,我希望模拟返回5
是否可以指定AddTwoNumbers
上的任何调用返回5
?
我已经知道我可以使用
了mock.Setup(n => n.Add(It.IsAny<int>(), It.IsAny<int>()).Returns(5);
但是如果add方法更改为使用浮点数,或者超过两个int,则使用此break进行测试,而能够说“对Add return 5的所有调用”将有助于解耦测试。
答案 0 :(得分:4)
不,你不能用Moq做到这一点。唯一的API Moq公开指定返回方法的值是您已经显示的方法。显然,执行此设置需要匹配类型参数才能进行编译。我认为您正在寻找更松散类型的API,例如:
mock.SetupMethodsNamed("Add").Returns(5);
如果这是您正在寻找的内容,请随时open an issue with the Moq project;他们通常对建议非常开放,并且可能能够指出这种方法的问题或者为什么没有实施。
但是,我认为这样做没有任何实际好处。如果您试图保护您的代码免受未来更改的影响,那么您如何才能知道5
始终是一种合理的返回类型?如果您只是想保存一些工作(即一次性设置int
重载和float
重载),那么只需编写一个方法来完成它们并完成它们。