gpt4 book ai didi

c# - FakeItEasy 重置对对象的调用

转载 作者:行者123 更新时间:2023-11-30 14:58:10 24 4
gpt4 key购买 nike

我使用 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);
}

最佳答案

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

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

关于c# - FakeItEasy 重置对对象的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19688043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com