在我测试的方法中,我想声明在抛出异常之前已经进行了调用。
目前测试的Act / Assert部分如下所示:
Assert.Throws<Exception>(() => sut.HandleMessage(messageToProcess));
mock.Verify(n => n.Method(It.IsAny<string>()), Times.Once);
但由于我断言HandleMessage
抛出异常(有自己的测试用例)然后验证mock.Method
被调用,这打破了仅断言一次的规则。
这意味着如果没有抛出异常而导致测试失败,这不是我在这里测试的。
即使没有抛出异常,我如何验证方法是否已被调用,这里是否可以接受try-catch-finally(如下所示)?
try
{
sut.HandleMessage(messageToProcess);
}
catch{}
finally
{
mock.Verify(n => n.Method(It.IsAny<string>()), Times.Once);
}