我有一个名为 AuthManager 的类。它实现了一个接口 IAuthManager。该接口有两个方法。 AuthorizeTransaction() 和 取消交易()
假设我调用 AuthorizeTransaction() 并抛出异常,在 catch 块中我处理异常并调用 CancelTransaction()。
我如何通过 Moq 验证我的 CancelTransaction() 已被调用。我用 Mock mock = new Mock() 尝试了这个。然后 mock.Verify(…) 来验证调用了 cancelAuthorization() 方法。但是我收到错误无法验证非覆盖方法。我不想在方法上放置 virtual 关键字只是为了让测试能够通过。有没有办法验证 CancelAuthorization() 在异常时被调用?谢谢。
在您的测试方法或测试初始化程序中,您需要执行这些设置
_mockAuthManager.Setup(am => am.AuthorizeTransaction(It.IsAny<T>()))
.Throws(new Exception()); // Can specify exception as well.
_mockAuthManager.SetUp(am => am.CancelTransaction(It.IsAny<T>()))
.Returns(It.IsAny<T>())
然后在你的断言中
_mockAuthManager.Verify(am => am.CancelTransaction(It.IsAny<T>()), Times.Once);