断言没有方法被调用
Asserting no methods were called
如何断言 stubbed/mocked 对象的 none 方法被调用?对于单个方法,它相当简单,只需调用 Stub(x => x.METHOD()).Repeat.Never()
但如果你有一堆方法或大量重载方法,它会变得不方便。
是否有解决此问题的巧妙方法?
我还没有真正使用过 rhino-mocks,但是正如@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(); Expected #0, Actual #1.
正如其他人所说,使用 StrictMock
。
这就过去了。
var mockFoo = MockRepository.GenerateStrictMock<IFoo>();
mockFoo.VerifyAllExpectations();
这失败了。
var mockFoo = MockRepository.GenerateStrictMock<IFoo>();
mockFoo.Bar();
mockFoo.VerifyAllExpectations();
如何断言 stubbed/mocked 对象的 none 方法被调用?对于单个方法,它相当简单,只需调用 Stub(x => x.METHOD()).Repeat.Never()
但如果你有一堆方法或大量重载方法,它会变得不方便。
是否有解决此问题的巧妙方法?
我还没有真正使用过 rhino-mocks,但是正如@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(); Expected #0, Actual #1.
正如其他人所说,使用 StrictMock
。
这就过去了。
var mockFoo = MockRepository.GenerateStrictMock<IFoo>();
mockFoo.VerifyAllExpectations();
这失败了。
var mockFoo = MockRepository.GenerateStrictMock<IFoo>();
mockFoo.Bar();
mockFoo.VerifyAllExpectations();