据我了解,使用RhinoMocks创建的mock对象在创建时直接进入录制状态,然后调用Replay()进入回放状态。我想手动决定模拟对象何时开始录制,或者能够暂停录制。这在 RhinoMocks 中可行吗?
谢谢/埃里克
据我了解,使用RhinoMocks创建的mock对象在创建时直接进入录制状态,然后调用Replay()进入回放状态。我想手动决定模拟对象何时开始录制,或者能够暂停录制。这在 RhinoMocks 中可行吗?
谢谢/埃里克
模拟处于录制或重播模式。他们不能处于“无”模式。
如果您不想使用 AAA 语法并且想要控制记录/重放状态,那么您必须在创建模拟后立即通过调用 mockRepository.Replay(mock) 方法手动完成。
使用 mockRepository.BackToRecord(mock,option) 方法将 mock 放回记录模式。使用 BackToRecordOptions.None 选项来防止清除您已经设置的任何期望。
在我看来,最好使用 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();
如果您需要在对象进入播放模式之前使用它,那么您的测试就有问题。