3

我使用 fake 很容易为我的对象生成假货。现在我测试是否调用了假对象上的某些方法。问题是我希望每个单元测试都将假的状态重置回原始状态。

我需要这个,因为我为每个单元测试类生成一次假货,所以我需要以某种方式重置调用状态。

这就是我的代码的样子:

    [Test]
    public void Test_Process_SampleMessageNEW_Should_Call_ISampleMessageConverter_GetRouteObject()
    {
        //Arrange
        //should reset the state of the fakes, _sampleRouteConvertor and _orderDalcMock are fakes
        _sampleRouteConvertor.BackToRecord();
        _orderDalcMock.BackToRecord();
        A.CallTo(() => _orderDalcMock.GetOrder(A<IRQOrderIDCriteria>.Ignored))
            .Returns(new OrderDTO() {Id = nextId++});
        SampleMessage sampleMessage = SampleMessageTestHelpers.GetSavedSampleMessage();
        sampleMessage.MaterialId = CacheMaterials.GetMaterials()[0].Code;
        sampleMessage.MessageType = "NEW";

        //Act
        SampleMessageProcessor sampleMessageProcessor = new SampleMessageProcessor(sampleMessage);
        sampleMessageProcessor.Process();

        //Assert
        A.CallTo(() => _sampleRouteConvertor.GetRouteObject(A<RoutineSample>.Ignored, A<List<ICacheTrackArea>>.Ignored))
            .MustHaveHappened(Repeated.Exactly.Once);
    }
4

1 回答 1

5

为什么不为每个测试构建新的 Fakes?这将解决问题。

如果每次设置新的假货都是一段复杂的代码,请编写一个辅助函数来设置新的假货。

于 2013-10-30T16:11:30.697 回答