据我了解,使用RhinoMocks创建的模拟对象在创建时直接进入录制状态,然后调用Replay()进入重放状态。我想手动决定模拟对象何时开始录制,或者能够暂停录制。在RhinoMocks中这可能吗?
由于 /埃里克
答案 0 :(得分:3)
模拟处于记录或重放模式。他们不能处于“无”模式。
如果您不想使用AAA语法并且想要控制记录/重放状态,则必须在创建模拟后立即通过调用mockRepository.Replay(mock)方法手动执行此操作。 / p>
使用mockRepository.BackToRecord(mock,option)方法将模拟放回记录模式。使用BackToRecordOptions.None选项可以防止清除您已经设置的任何期望。
答案 1 :(得分:0)
在我看来,最好使用Arrange Act Assert格式。
var mockEmailService = MockRepository.GenerateMock<IEmailService>();
mockEmailService.Expect(x => x.Send("me@home", "Subject", "Body"));
//Thing to test
var controller = MehController(mockEmailService);
controller.Meh();
mockEmailService.VerifyAllExpectations();
如果您需要在进入播放模式之前使用该对象,那么您的测试就会出现问题。