我需要测试以下方法:
CreateOutput(IWriter writer)
{
writer.Write(type);
writer.Write(id);
writer.Write(sender);
// many more Write()s...
}
我已经创建了一个 Moq’d 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));
但是,在 CreateOutput()
中第二次调用 Write()
(写入 id
值)将抛出一个带有消息“ 因为模拟行为严格,写()调用失败。模拟上的所有调用都必须有相应的设置。”的 MockException
。
我还发现很难找到任何明确的、最新的 Moq 序列文档/示例。
是我做错了什么,还是我不能用同样的方法设置序列? 如果没有,是否有其他选择(最好使用 Moq/NUnit) ?