Xunit.net和Moq断言该方法被调用,无论抛出异常

时间:2015-10-22 13:35:20

标签: c# unit-testing moq xunit.net

在我测试的方法中,我想声明在抛出异常之前已经进行了调用。

目前测试的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);
}

0 个答案:

没有答案