微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的PartialMock方法忽略了我的期望

如何解决为什么我的PartialMock方法忽略了我的期望

|| 我有一个用作PartialMock的基类
1  IContextManager contextManager = mocks.StrictMock<IContextManager>();
2  target = mocks.PartialMock<EnumerationServiceBase>(new object[] { contextManager });
3  Expect.Call(delegate { contextManager.RemoveContext(guid); });
4  mocks.ReplayAll();
5  actual = target.ReleaSEOp(request);
target.ReleaSEOp(request)调用了contextManager.RemoveContext方法,该方法已在第3行设置了期望值,但仍然出现以下错误 Rhino.Mocks.Exceptions.ExpectationViolationException:IContextManager.RemoveContext(\“ e04c757b-8b70-4294-b133-94fd6b52ba04 \”);预期#0,实际#1。 这是第一个没有用到的测试(其他45个左右都可以),但这也是第一个使用A)部分模拟和B)返回void的模拟方法的测试。有任何想法吗?     

解决方法

  这是第一个测试   没用(其他45个左右   很好),但这也是第一个   使用A)部分模拟,和B)a   返回void的模拟方法。任何   想法? A)PartialMock意味着Rhino仅在有期望的情况下才会拦截方法调用。我认为您的用法很好。 B)无效方法也不应该成为问题。 最有可能的是,您的问题出在您的期望中:
Expect.Call(delegate { contextManager.RemoveContext(guid); });
您所期望的
guid
必须与
target
传入的GUI相同。 尝试这个:
Expect.Call(delegate { contextManager.RemoveContext(guid); }).IgnoreArguments();

// you can also use fluent syntax like this:
// contextManager.Expect(x => x.RemoveContext(guid)).IgnoreArguments();
如果可行,您可以肯定地确定您的测试指南和您的课程中使用的实际指南不匹配。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。