我想测试一个类中三个依赖项的方法的执行顺序。也就是说,检查以确保在类a上调用方法,然后是b,然后是c并按顺序执行。
我打算使用Moq.Sequence库,但我发现现在支持开箱即用的序列测试。唯一的问题是关于MoqSequence类的文档非常清晰,我找不到具体的例子。
另外,我的问题不是关于这是对还是错,但是我认为测试执行顺序是一个有效的测试(这里的灰色区域是什么?)
答案 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)));