是否可以验证Assert.Multiple块中的方法调用以及对 的其他调用Assert?
SomeProperty当方法调用MyMethod未验证时,我当前的解决方案不会调用 assert on 。接近我想要的唯一方法是将调用移到myInterfaceMock.Verify最后,但是当有多个方法调用要验证时,这不再起作用。
var mInterfaceMock = new Mock<IMyInterface>()
.Setup(x => x.MyMethod())
.Verifiable();
var systemUnderTest = new MyClass(myInterfaceMock.Object);
systemUnderTest.MethodToTest();
Assert.Multiple(() => {
myInterfaceMock.Verify();
Assert.That(systemUnderTest.SomeProperty, Is.True);
});
Run Code Online (Sandbox Code Playgroud)
验证将抛出自己的异常,断言块不知道如何处理。这就是为什么当验证失败时,之后不会调用任何东西。
文档中的注释还指出
如果抛出任何未处理的异常,测试将立即终止。意外异常通常表明测试本身有错误,因此必须终止它。如果异常发生在一个或多个断言失败被记录后,这些失败将与终止异常本身一起报告。
引用多个断言
考虑以下方法
//...
Assert.Multiple(() => {
Assert.That(() => myInterfaceMock.Verify(), Throws.Nothing);
Assert.That(systemUnderTest.SomeProperty, Is.True);
});
Run Code Online (Sandbox Code Playgroud)
如果验证抛出异常,那么它将由它自己的断言处理。