有什么方法可以决定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(); 

如果您在进入回放模式之前需要使用该对象,那么测试出现问题。