为什么我的模拟失败了?

时间:2010-09-08 19:21:10

标签: c# rhino-mocks

在下面的代码中,如果我理解正确的话,我会将Speed属性存根并将其设置为0,这应该调用Stop方法,但是当我运行测试时,它说它预期会调用Stop,但它没有被召集。这是代码:

 public class Car
 {
    public virtual int Speed { get; set; }

    public virtual bool Stopped()
    {
        if (Speed > 0)
            return false;

        Stop();
        return true;
    }

    public virtual void Stop()
    {

    }
}

[TestFixture]
public class CarTests
{
    [Test]
    public void WhenSpeedIsZeroCarShouldBeStopped()
    {
        var carMock = MockRepository.GenerateMock<Car>();
        carMock.Stub(x => x.Speed).Return(0);
        carMock.Expect(x => x.Stop());

        carMock.VerifyAllExpectations();
    }
}

我得到的实际错误是:

Rhino.Mocks.Exceptions.ExpectationViolationException: Car.Stop(); Expected #1, Actual #0.
   at Rhino.Mocks.Impl.ReplayMockState.Verify()
   at Rhino.Mocks.MockRepository.Verify(Object obj)
   at Rhino.Mocks.RhinoMocksExtensions.VerifyAllExpectations(Object mockObject)
   at MockTutorial.CarTests.WhenSpeedIsZeroCarShouldBeStopped() in C:\Programming\Test\MockTutorial\MockTutorial\DirectoryInfoSample.cs:line 94

1 个答案:

答案 0 :(得分:1)

您没有致电Stopped() - 那么要求Speed属性调用Stop()会是什么?