我该如何断言没有任何一个桩/被嘲弄的对象的方法被调用?对于单一方法来说,它非常简单,只需拨打Stub(x => x.METHOD()).Repeat.Never()
即可,但如果您有大量方法或大量重载方法,则会变得不方便。声明没有方法被调用
这是否有一个整洁的解决方法?
我该如何断言没有任何一个桩/被嘲弄的对象的方法被调用?对于单一方法来说,它非常简单,只需拨打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();
你应该可以创建一个没有预期的严格模拟 - 调用它的任何东西都会导致期望违规被抛出。 – Lee 2015-04-02 15:01:01
@Lee - 谢谢,这就是我问了这个问题后真正尝试过的东西,它对我来说是一种魅力。无论如何,如果你想编辑你的回复,以便回复而不是评论,我会接受它 – SOReader 2015-04-15 14:14:43