C# 如何使用MoqSequence

C# 如何使用MoqSequence,c#,unit-testing,moq,C#,Unit Testing,Moq,我想测试一个类中三个依赖项的方法的执行顺序。也就是说,检查以确保在类a、b和c上调用一个方法,并按照该顺序执行 我本来打算使用Moq.Sequence库,但是我发现序列测试现在是开箱即用的。唯一的一点是关于MoqSequence类的文档非常简单,我找不到具体的例子 另外,我的问题并不是说这具体是对还是错,但我相信测试执行顺序是一个有效的测试(这里有一点灰色区域?)在同一个模拟上使用MockSequence时存在错误。它肯定会在Moq库的后续版本中修复(您也可以通过更改Moq.MethodCall

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

我本来打算使用Moq.Sequence库,但是我发现序列测试现在是开箱即用的。唯一的一点是关于MoqSequence类的文档非常简单,我找不到具体的例子


另外,我的问题并不是说这具体是对还是错,但我相信测试执行顺序是一个有效的测试(这里有一点灰色区域?)

在同一个模拟上使用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))); 

另外,当使用自定义回调时,您不必使用
MockBehavior.Strict
(moq的另一个问题)。这是有效的,我的同事实际上是这样做的,这很好。序列测试是有效的单元测试吗?@brumcouse严格来说,它更像是一个集成测试。