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