相关疑难解决方法(0)

使用Moq验证呼叫是否按正确的顺序进行

我需要测试以下方法:

CreateOutput(IWriter writer)
{
    writer.Write(type);
    writer.Write(id);
    writer.Write(sender);

    // many more Write()s...
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个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));
Run Code Online (Sandbox Code Playgroud)

但是,第二次调用Write()in CreateOutput()(写入id值)会抛出一条MockException消息" IWriter.Write()调用失败,模拟行为为Strict.模拟上的所有调用都必须有相应的设置. "

我也发现很难找到任何明确的,最新的Moq序列文档/示例.

我做错了什么,或者我不能使用相同的方法设置序列?如果没有,有没有我可以使用的替代品(最好使用Moq/NUnit)?

c# nunit unit-testing moq sequential

55
推荐指数
6
解决办法
2万
查看次数

标签 统计

c# ×1

moq ×1

nunit ×1

sequential ×1

unit-testing ×1