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

发布于 2024-08-02 10:09:32 字数 240 浏览 7 评论 0原文

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

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

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

有办法做到这一点吗?

如果我未指定任何参数 - NUnit 将无法通过测试,因为它需要 0 个参数,但收到了 1 个参数。

I'm using NUnit mocks and would like to specify that I expect a call but without saying what the arguments will be for example:

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

Obviously filling in the correct syntax instead of ANY_ARGUMENT.

Is there a way to do this?

If I specify no arguments - NUnit fails the test because it expected 0 arguments but received 1.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

怪我入戏太深 2024-08-09 10:09:32

查看 Reflector 中 nunit.mocks.dll 的 2.5.2 版本,似乎没有一种方法可以完成您正在寻找的操作。 NUnit 是开源的,因此一种选择是获取代码并添加功能。

Looking at version 2.5.2 of nunit.mocks.dll in Reflector, it doesn't appear there is a method that does what you are looking for. NUnit is open source, so one option is to get the code and add the feature.

梦里兽 2024-08-09 10:09:32

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

使用 SetReturnValue 代替 ExpectAndReturn。第一个函数,顾名思义,指定输入对象和返回对象。最后一个函数只是为特定函数指定一个返回对象。

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

Yes there is a such a function in NUnit Mocks.

Instead of the ExpectAndReturn use SetReturnValue. First function, as it names tell you, you specify input object and return object. Last function just specify a return object for the specific function.

Use: interfaceMock.SetReturnValue("SomeRetrunFunction", someReturnFunction);

仙女 2024-08-09 10:09:32

你有没有尝试过:

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

Have you tried:

mock.SetReturnValue(true);
mock.Expect("Equals");
如何视而不见 2024-08-09 10:09:32

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

例如。

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

You can implement a new instance of IResolveConstraint that accepts anything and use that as a parameter in your test. NUnit treats instances of IResolveConstraint differently than any other object, using Assert.That, instead of Assert.AreEqual to verify its correctness.

Eg.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文