为什么这个 NUnit+Moq 测试失败?
我希望你知道,因为我看不到。 凡是弄清楚如何实现该测试想要实现的目标的人都会获得奖励积分。
using NUnit.Framework;
using Moq;
[TestFixture]
public class MoqHuh
{
public class A {}
public class B : A {}
public interface IHelper
{
void DoIt(A a);
}
[Test]
public void Huh()
{
var mock = new Mock<IHelper>();
mock.Expect(helper => helper.DoIt(It.IsAny<B>())).Verifiable();
mock.Object.DoIt(new B());
mock.VerifyAll();
}
}
I hope you know, because I don't see it. Bonus points for whoever figures out how one can achieve what this test is trying to achieve.
using NUnit.Framework;
using Moq;
[TestFixture]
public class MoqHuh
{
public class A {}
public class B : A {}
public interface IHelper
{
void DoIt(A a);
}
[Test]
public void Huh()
{
var mock = new Mock<IHelper>();
mock.Expect(helper => helper.DoIt(It.IsAny<B>())).Verifiable();
mock.Object.DoIt(new B());
mock.VerifyAll();
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
事实证明这是飞行员的失误。 我错误地认为 Moq 在 Mono 上工作得很好。
(看起来效果很好)。 这个问题只发生在使用 mono 的 gmcs 编译时,而不是使用 Microsoft 的 csc 编译时。
我已经向 Mono 团队报告了相应的错误,并将继续确保使用 Mono 的 gmcs.exe 编译时完整的 Moq 测试套件通过。
抱歉产生噪音。
卢卡斯
Turns out this was sort of pilot error. I incorrectly assumed Moq working fine on Mono.
(which it looks like it does just fine). This issue only happens when compiled with mono's gmcs, not when compiled with Microsofts csc.
I have reported the appropriate bugs with the mono team, and will continue towards making sure the full Moq test suite passes when compiled with mono's gmcs.exe
Sorry for the noise.
Lucas
这个测试效果很好。
由于没有正在测试的系统,因此您正在测试起订量是否按预期工作。
This test works fine.
Since there is no system under test, you are testing that moq works as expected.
抱歉说得不够清楚。 我正在测试的确实是模拟的行为符合我的预期。 对我来说,上面的测试失败了。 我很惊讶听到它通过了你。
我正在 VisualStudio 2008 中运行测试。我刚刚升级到 Moq 2.6,测试仍然失败。 您使用什么版本的最小起订量来通过此测试?
Sorry for not being clear enough. What I am testing is indeed that the Mock behaves as I would expect. For me the test above fails. I'm very surprised to hear it passes for you.
I'm running the test in VisualStudio 2008. I just upgraded to Moq 2.6, and the test still fails. What version of Moq do you use with which this test passes?
这不会用 trunk 的最新版本(3.0 beta)重现
This doesn't repro with the latest version from the trunk (3.0 beta)