【发布时间】:2014-08-22 02:06:34
【问题描述】:
我正在尝试编写这个简单的测试:
var fixture = new Fixture().Customize(new AutoMoqCustomization());
var postProcessingAction = fixture.Freeze<Mock<IPostProcessingAction>>();
var postProcessor = fixture.Freeze<PostProcessor>();
postProcessor.Process("", "");
postProcessingAction.Verify(action => action.Do());
Verify 检查失败。
postProcessor.Process 的代码是
public void Process(string resultFilePath, string jobId)
{
IPostProcessingAction postProcessingAction =
postProcessingActionReader
.CreatePostProcessingActionFromJobResultXml(resultFilePath);
postProcessingAction.Do();
}
postProcessingActionReader是通过构造函数初始化的接口字段。
我希望测试通过但它失败了,结果证明从 CreatePostProcessingActionFromJobResultXml 方法返回的 IPostProessingAction 实例与从 fixture.Freeze<> 返回的实例不同。
我的期望是,在冻结此 Mock 对象后,它将在所需的每个地方注入 IPostProcessingAction 接口的底层模拟,并使所有返回 IPostProcessingAction 的模拟方法返回相同的对象。
我对模拟方法的返回值的期望不正确吗? 有没有办法改变这种行为,以便模拟方法返回相同的冻结实例?
【问题讨论】:
-
postProcessingActionReader的实现是什么样的?
标签: moq autofixture