Есть ли способ решить, когда макет RhinoMocks начинает запись? - PullRequest
2 голосов
/ 06 февраля 2009

Насколько я понимаю, фиктивный объект, созданный с помощью RhinoMocks, входит в состояние записи непосредственно при его создании, а затем вы вызываете Replay () для входа в состояние воспроизведения. Я хотел бы вручную решить, когда фиктивный объект начинает запись, или иметь возможность приостановить запись. Возможно ли это в RhinoMocks?

Спасибо / Erik

Ответы [ 2 ]

3 голосов
/ 10 февраля 2009

Моты находятся либо в режиме записи, либо в режиме воспроизведения. Они не могут находиться в режиме «ничего».

Если вы не хотите использовать синтаксис AAA и хотите контролировать состояние записи / воспроизведения, вам придется делать это вручную, вызывая метод mockRepository.Replay (mock) сразу после создания макета.

Используйте метод mockRepository.BackToRecord (mock, option), чтобы вернуть mock в режим записи. Используйте параметр BackToRecordOptions.None, чтобы предотвратить сброс любых ожиданий, которые вы уже установили.

0 голосов
/ 06 февраля 2009

На мой взгляд, лучше использовать формат 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();

Если вам нужно использовать объект до того, как он перейдет в режим воспроизведения, значит, с вашим тестом что-то не так.

...