我該如何斷言沒有任何一個樁/被嘲弄的對象的方法被調用?對於單一方法來說,它非常簡單,只需撥打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