據我所知,用RhinoMocks創建的模擬對象在創建時直接進入錄製狀態,然後調用Replay()進入重放狀態。我想手動決定模擬對象何時開始錄製,或者能夠暫停錄製。 RhinoMocks會有這種可能嗎?有什麼方法可以決定RhinoMocks模擬何時開始錄製?
感謝 /埃裏克
據我所知,用RhinoMocks創建的模擬對象在創建時直接進入錄製狀態,然後調用Replay()進入重放狀態。我想手動決定模擬對象何時開始錄製,或者能夠暫停錄製。 RhinoMocks會有這種可能嗎?有什麼方法可以決定RhinoMocks模擬何時開始錄製?
感謝 /埃裏克
嘲笑處於記錄模式或重放模式。他們不能處於「無」模式。
如果您不想使用AAA語法,並且您想要控制記錄/重播狀態,那麼您必須通過在創建模擬之後立即調用mockRepository.Replay(mock)方法來手動執行它。
使用mockRepository.BackToRecord(模擬,選項)方法將模擬回到記錄模式。使用BackToRecordOptions.None選項可防止清除您已設置的任何期望。
在我看來,這是更好地使用排列法斷言格式。
var mockEmailService = MockRepository.GenerateMock<IEmailService>();
mockEmailService.Expect(x => x.Send("[email protected]", "Subject", "Body"));
//Thing to test
var controller = MehController(mockEmailService);
controller.Meh();
mockEmailService.VerifyAllExpectations();
如果您在進入回放模式之前需要使用該對象,那麼測試出現問題。