有没有办法指定ANYTHING作为NUnit Mocks Expect调用的参数?

时间:2009-08-25 20:12:30

标签: c# nunit mocking nunit-mocks

我正在使用NUnit模拟,并希望指定我期待一个调用,但不知道参数将是什么例如:

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

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

有办法做到这一点吗?

如果我没有指定参数--NUnit未通过测试,因为它预期0个参数但收到1。

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

你试过了吗?

mock.SetReturnValue(true);
mock.Expect("Equals");

答案 3 :(得分:0)

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

例如

myMock.ExpectAndReturn(“mockedMethod”,argument1,new AcceptsAnythingConstraint())