断言没有方法被调用

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();