FakeItEasy重置对象的调用

Ale*_*ecu 3 .net c# nunit fakeiteasy

我使用假的很容易为我的对象生成假货.现在我测试假对象的某些方法是否被调用.我希望每个单元测试都能将伪造的状态重置回原始状态.

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

这是我的代码的样子:

    [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);
    }
Run Code Online (Sandbox Code Playgroud)

J. *_*fer 5

为什么不为每个测试建立新的假货?这将解决问题.

如果每次设置新假是一个复杂的代码块,写一个辅助函数来设置新假.