如何声明没有调用存根/模拟对象的方法?对于单个方法而言,它非常简单,只需调用Stub(x => x.METHOD()).Repeat.Never()
,但如果您有大量方法或大量重载方法,则会变得不方便。
这是否有一个整洁的解决方法?
答案 0 :(得分:2)
我还没有真正使用过犀牛模拟,但正如@Lee在他的评论中建议的那样,你应该能够在使用StrictMock
之后达到你没有任何其他期望的效果。因此,考虑到以下测试:
public void TestStrickMock() {
var mockRepo = new MockRepository();
// Create a StrictMock for the IDummy interface
var mock = mockRepo.StrictMock<IDummy>();
// Switch the mode of the mock repo from record to replay
mockRepo.ReplayAll();
// Invoke one of the methods on our mocked instance
mock.Method1();
}
此测试将失败,因为在未设置调用期望时调用Method1
。它失败并出现错误:
TestStrickMock:Rhino.Mocks.Exceptions.ExpectationViolationException: IDummy.Method1();预期#0,实际#1。
答案 1 :(得分:0)
正如其他人所说,使用StrictMock
。
这传递了。
var mockFoo = MockRepository.GenerateStrictMock<IFoo>();
mockFoo.VerifyAllExpectations();
这失败了。
var mockFoo = MockRepository.GenerateStrictMock<IFoo>();
mockFoo.Bar();
mockFoo.VerifyAllExpectations();