我如何使用MoqSequence

时间:2014-03-28 12:06:51

标签: c# unit-testing moq

我想测试一个类中三个依赖项的方法的执行顺序。也就是说,检查以确保在类a上调用方法,然后是b,然后是c并按顺序执行。

我打算使用Moq.Sequence库,但我发现现在支持开箱即用的序列测试。唯一的问题是关于MoqSequence类的文档非常清晰,我找不到具体的例子。

另外,我的问题不是关于这是对还是错,但是我认为测试执行顺序是一个有效的测试(这里的灰色区域是什么?)

1 个答案:

答案 0 :(得分:2)

在同一个模拟器上使用MockSequence时有错误。它肯定会在Moq库的更高版本中得到修复(您也可以通过更改Moq.MethodCall.Matches实现来手动修复它。)

如果您只想使用Moq,那么您可以通过回调验证方法调用顺序:

int callOrder = 0;
writerMock.Setup(x => x.Write(expectedType)).Callback(() => Assert.That(callOrder++, Is.EqualTo(0))); 
writerMock.Setup(x => x.Write(expectedId)).Callback(() => Assert.That(callOrder++, Is.EqualTo(1))); 
writerMock.Setup(x => x.Write(expectedSender)).Callback(() => Assert.That(callOrder++, Is.EqualTo(2)));