5

我正在使用 NUnit 模拟,并想指定我期待一个调用,但没有说明参数是什么,例如:

mock.ExpectAndReturn("Equals", true, ANY_ARGUMENT);

显然填写正确的语法而不是 ANY_ARGUMENT。

有没有办法做到这一点?

如果我不指定任何参数 - NUnit 测试失败,因为它期望 0 个参数但收到 1 个。

4

4 回答 4

2

是的,NUnit Mocks 中有一个这样的功能。

而不是 ExpectAndReturn 使用 SetReturnValue。第一个函数,正如它的名字告诉你的那样,你指定输入对象和返回对象。最后一个函数只是为特定函数指定一个返回对象。

利用:interfaceMock.SetReturnValue("SomeRetrunFunction", someReturnFunction);

于 2011-01-19T08:09:00.807 回答
2

查看 Reflector 中 nunit.mocks.dll 的 2.5.2 版本,似乎没有一种方法可以满足您的需求。NUnit 是开源的,因此一种选择是获取代码并添加功能。

于 2009-08-27T23:26:48.773 回答
1

你有没有尝试过:

mock.SetReturnValue(true);
mock.Expect("Equals");
于 2010-12-16T11:45:13.630 回答
0

您可以实现一个新的 IResolveConstraint 实例,它接受任何内容并将其用作测试中的参数。NUnit 对 IResolveConstraint 实例的处理不同于任何其他对象,使用 Assert.That 而不是 Assert.AreEqual 来验证其正确性。

例如。

myMock.ExpectAndReturn("mockedMethod", argument1, new AcceptsAnythingConstraint())

于 2010-06-22T12:21:24.230 回答