RhinoMocks:清除或重置AssertWasCalled()

Bri*_*Low 5 unit-testing rhino-mocks mocking

如何验证在我的测试的"act"部分中调用mock,忽略在测试的"Arrange"部分中对mock的任何调用.

[Test]
public void ShouldOpenThrottleWhenDrivingHome()
{
    var engineMock = MockRepository.GenerateStub<IEngine>();
    var car = new Car(engineMock);
    car.DriveToGroceryStore(); // this will call engine.OpenThrottle

    car.DriveHome();

    engine.AssertWasCalled(e => e.OpenThrottle());
}
Run Code Online (Sandbox Code Playgroud)

我宁愿不尝试注入一个新的模拟或依赖.Repeat(),因为测试然后必须知道在设置中调用该方法的次数.

Gen*_*e C 5

在这些情况下,我使用模拟而不是存根和组合ExpectVerifyAllExpectations:

//Arrange
var engineMock = MockRepository.GenerateMock<IEngine>();
var car = new Car(engineMock);
car.DriveToGroceryStore(); // this will call engine.OpenThrottle

engineMock.Expect(e => e.OpenThrottle());

//Act
car.DriveHome();

//Assert
engineMock.VerifyAllExpectations();
Run Code Online (Sandbox Code Playgroud)

在这种情况下,在安排完成之后对期望的方法进行预期.有时我认为这是它自己的测试风格:安排,期待,行动,断言