Я перечитал ваш вопрос, и, похоже, вы хотите, чтобы какой-то метод разделял вызовы на макет на этапе «Аранжировка» и вызовы на макет на этапе «Акт».Я не знаю какой-либо встроенной поддержки для него, но что вы можете сделать, это передать обратный вызов с помощью WhenCalled
.В вашем случае код будет выглядеть примерно так:
// Arrange
var engineMock = MockRepository.GenerateStub<IEngine>();
var car = new Car(engineMock);
int openThrotlleCount = 0;
engineMock.Expect(x => x.OpenThrottle(arg)).WhenCalled(invocation => openThrotlleCount++);
car.DriveToGroceryStore(); // this will call engine.OpenThrottle
var openThrottleCountBeforeAct = openThrotlleCount;
// Act
car.DriveHome();
// Assert
Assert.Greater(openThrotlleCount, openThrottleCountBeforeAct);
Надеюсь, это поможет ...