我用假货很容易为我的物品制造假货。现在,我测试是否在调用的假对象上使用了一些方法。问题是,我希望每个单元测试将假状态重置回原始状态。
我需要这样做,因为我为每个单元测试类生成一次假的,所以我需要以某种方式重置调用状态。
我的代码是这样的:
[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);
}发布于 2013-10-30 16:11:30
为什么不为每次测试建立新的假货呢?这将解决问题。
如果每次设置新的假代码是一个复杂的代码块,那么编写一个帮助函数来设置新的假代码。
https://stackoverflow.com/questions/19688043
复制相似问题