答案 0 :(得分:0)
当然有,但你需要知道你在寻找什么。 我假设通过实现自己的IExceptionHandler,您希望在抛出异常时发生特定的事情。例如,您可能希望ILogger像这样调用LogException()方法:
class ExceptionHandler : IExceptionHandler
{
public void RunAction(Action unsafeAction)
{
try{
unsafeAction.Invoke();
}
catch(Exception ex){
_logger.LogException(ex)
}
}
}
要对此进行单元测试,您可以写下以下内容:
[TestMethod]
public void RunAction_WhenActionThrowsException_LoggerIsInvoked()
{
// Arrange
var badException = new Exception("I'm bad");
var loggerMock = new Mock<ILogger>();
var instance = new ExceptionHandler(loggerMock.Object);
var badMethod = () => throw badException;
// Act
instance.RunAction(badMethod);
// Assert
loggerMock.Verify(logger => logger.LogException(badException), Times.Once());
}