Сбросить макет в RhinoMocks - PullRequest
2 голосов
/ 20 апреля 2011

Я пишу тесты NUnit с RhinoMocks.Один из тестов выглядит так:

mock = MockRepository<IFoo>.CreateMock();

// Arrange
// During the Arrange part, mock.MyMethod() gets called several times.

// Act
// During the Act part, mock.MyMethod() should be called exactly once.

// Assert
mock.AssertWasCalled(x => x.MyMethod()).Repeat.Once();

Естественно, это не удается, потому что MyMethod () вызывался более одного раза.

Есть ли способ, которым я могу сбросить количество вызовов MyMethod () перед частью Act, чтобы захватывались только вызовы, сделанные после сброса?

Ответы [ 3 ]

2 голосов
/ 20 апреля 2011

Я думаю, что @ alexl, на который мы ссылаемся, должен помочь вам.Но мне любопытно, в какой ситуации вы находитесь, когда ваши издевательства называются вне вашей фазы Акта теста.Это может быть признаком слишком тесной связи между вашими объектами.

В качестве возможного обходного пути, если при Arrange не сохраняется информация о состоянии, вы всегда можете просто создать еще один макет IFoo, который используется только во времяОрганизовать фазу.

0 голосов
/ 17 мая 2016
// Arrange
// During the Arrange part, mock.MyMethod() gets called several times.

var mockRep = new MockRepository();
var mock = mockRep.dynamicMock<IFoo>();
Expect.Call(mock.MyMethod()).Return("desired result").Repeat.Time("count");

mock.Replay()

// Act
//test go here 

// Assert
mock.AssertWasCalled(x => x.MyMethod()).Repeat.Once();
0 голосов
/ 20 апреля 2011

может быть, этот пост может помочь вам: Как очистить предыдущие ожидания от объекта?

Mock.BackToRecord () сделает это

...