我还在学习Moq,正在使用Moq编写单元测试:
[TestMethod]
public void ProcessFileRowQueue()
{
var mock = new Mock<EdiEntityManager>();
mock.Setup(s => s.GetFileRowEntitiesToProcess()).Returns(GetMockFileRowEntities);
var controller = new EdiController("LOCAL", mock.Object);
controller.ProcessFileRowQueue();
}
这很有效。
现在,我想确保确保ProcessFileRowQueue()实际完成它的工作。在EdiManager上有一个我想模拟的方法,所以我可以拦截参数并检查它们并确保它们是正确的。
public virtual void SaveNewEdiDocument(EdiDocument ediDocument, Translation translation)...
但是,我没有看到如何使用参数模拟方法。
这就是我的想法:
mock.Setup(s => s.SaveNewEdiDocument(It.IsAny<EdiDocument>(), It.IsAny<Translation>()).Returns(ValidateResults));
我该如何写这个,或者我应该以不同的方式验证结果?
答案 0 :(得分:0)
我找到了Callback方法:
[TestMethod]
public void ProcessFileRowQueue()
{
var mock = new Mock<EdiEntityManager>();
mock.Setup(s => s.GetFileRowEntitiesToProcess()).Returns(GetMockFileRowEntities);
mock.Setup(s => s.SaveNewEdiDocument(It.IsAny<EdiDocument>(), It.IsAny<Translation>()))
.Callback<EdiDocument, Translation>(VerifyResult);
var controller = new EdiController("LOCAL", mock.Object);
controller.ProcessFileRowQueue();
}
public void VerifyResult(EdiDocument ediDocument, Translation translation)
{
}