我需要测试以下方法:
CreateOutput(IWriter writer)
{
writer.Write(type);
writer.Write(id);
writer.Write(sender);
// many more Write()s...
}
我已经创建了一个起订量IWriter
,并且我想确保Write()
以正确的顺序调用这些方法。
我有以下测试代码:
var mockWriter = new Mock<IWriter>(MockBehavior.Strict);
var sequence = new MockSequence();
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedType));
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedId));
mockWriter.InSequence(sequence).Setup(x => x.Write(expectedSender));
但是,第二次调用Write()
in CreateOutput()
(写入id
值)会抛出一条MockException
消息“ IWriter.Write() 调用失败,模拟行为严格。模拟上的所有调用都必须有相应的设置。 ”。
我还发现很难找到任何明确的、最新的 Moq 序列文档/示例。
我做错了什么,或者我不能使用相同的方法设置序列吗?如果没有,有没有我可以使用的替代方案(最好使用 Moq/NUnit)?