断言没有方法被称为

时间:2015-04-02 14:55:29

标签: c# unit-testing rhino-mocks

如何声明没有调用存根/模拟对象的方法?对于单个方法而言,它非常简单,只需调用Stub(x => x.METHOD()).Repeat.Never(),但如果您有大量方法或大量重载方法,则会变得不方便。

这是否有一个整洁的解决方法?

2 个答案:

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