我正在使用 NUnit 模拟,并想指定我期待一个调用,但没有说明参数是什么,例如:
mock.ExpectAndReturn("Equals", true, ANY_ARGUMENT);
显然填写正确的语法而不是 ANY_ARGUMENT。
有没有办法做到这一点?
如果我不指定任何参数 - NUnit 测试失败,因为它期望 0 个参数但收到 1 个。
我正在使用 NUnit 模拟,并想指定我期待一个调用,但没有说明参数是什么,例如:
mock.ExpectAndReturn("Equals", true, ANY_ARGUMENT);
显然填写正确的语法而不是 ANY_ARGUMENT。
有没有办法做到这一点?
如果我不指定任何参数 - NUnit 测试失败,因为它期望 0 个参数但收到 1 个。
是的,NUnit Mocks 中有一个这样的功能。
而不是 ExpectAndReturn 使用 SetReturnValue。第一个函数,正如它的名字告诉你的那样,你指定输入对象和返回对象。最后一个函数只是为特定函数指定一个返回对象。
利用:interfaceMock.SetReturnValue("SomeRetrunFunction", someReturnFunction);
查看 Reflector 中 nunit.mocks.dll 的 2.5.2 版本,似乎没有一种方法可以满足您的需求。NUnit 是开源的,因此一种选择是获取代码并添加功能。
你有没有尝试过:
mock.SetReturnValue(true);
mock.Expect("Equals");
您可以实现一个新的 IResolveConstraint 实例,它接受任何内容并将其用作测试中的参数。NUnit 对 IResolveConstraint 实例的处理不同于任何其他对象,使用 Assert.That 而不是 Assert.AreEqual 来验证其正确性。
例如。
myMock.ExpectAndReturn("mockedMethod", argument1, new AcceptsAnythingConstraint())