【发布时间】:2014-05-15 12:59:44
【问题描述】:
我正在 Visual Studio 2012 中的 Visual Basic .NET 中编写测试。在特定的 Stub 中,我确信所有参数都匹配,但它只有在我添加 IgnoreArguments 时才会执行,但因为我需要对于相同的方法有其他类似的存根,这对于生产来说是不可接受的。
我不能发布代码示例(好吧,我可以,但它需要非常大才能有用)。但如果我告诉你这是一个形式的请求就足够了:
Dim request As IMyRequest = MyService.CreateRequest(obj1, obj2, list1,
int1, int2, bool1, bool2, bool3, string1, bool4, int3)
我的存根看起来像:
_myService.Stub(Function(x) x.CreateRequest(obj1, obj2, list1,
int1, int2, bool1, bool2, bool3, string1,
bool4, int3)).IgnoreArguments.Return(myRequest)
而_myService 是在TestInitialize 方法中定义的模拟,如下所示:
_myService= Mock.Get(Of IMyService)()
我已经检查过了,所有的值都匹配。还有另一个非常相似的测试,调用非常相似(在没有IgnoreArguments 子句的情况下完美运行),我已将其用作示例,所以我不知道为什么这不起作用。
问:很抱歉问了这么含糊的问题,但谁能想到我可能遗漏的任何东西?
我会澄清任何不合理的地方。感谢阅读。
编辑: 哎呀,事实证明(在另一双眼睛瞥了一眼代码之后)确实其中一个参数的类型是关闭的。 对于令人作呕的相似类名是可以的我不知道如何关闭它,所以让它死掉吧。感谢和抱歉抢了你的时间。
【问题讨论】:
-
提供的细节很难说。您能否添加更多详细信息以提供Minimal, Complete, and Verifiable example。
-
我想可能是这样,抱歉。我会调查一下,虽然我需要一些时间来匿名代码,因为我不能在这里发布真正的源代码。谢谢。
-
不,我想我所能做的就是就在这里检查的内容寻求共同建议。我已经让一些同事看代码,我们都看不到问题所在。因此,如果有人过去遇到过这个问题并且可以分享他的经验(即使该特定情况不适用于这种情况),我们将不胜感激。
标签: vb.net unit-testing visual-studio-2012 stub