【发布时间】:2016-09-15 04:12:35
【问题描述】:
我有一个类的 Moq 模拟,我需要验证是否调用了某个方法。根据变量的类型,我需要检查该方法是被调用过一次还是从不被调用。
所以,这行得通:
if (exception is ValidationException)
mockRequestHandler.Verify(x => x.HandleException(exception),
Times.Once);
else
mockRequestHandler.Verify(x => x.HandleException(exception),
Times.Never);
我正在尝试如下使用三元运算符,但它似乎不起作用:
mockRequestHandler.Verify(x => x.HandleException(exception),
(exception is ValidationException) ? Times.Once: Times.Never);
我收到以下编译时错误:
无法确定条件表达式的类型,因为“方法组”和“方法组”之间没有隐式转换。
有什么简单的我忽略了还是不能以这种方式使用三元运算符?
【问题讨论】:
-
为什么不把异常检查放在第一位呢?例如。
(exception is ValidationException) ? mockRequestHandler.Verify(x => x.HandleException(exception), Times.Once) : mockRequestHandler.Verify(x => x.HandleException(exception), Times.Never);。它看起来几乎和你原来的一样长,但请参考这个链接:Using conditional (?:) operator for method selection in C# (3.0)? -
能否指定
Verify、Times.Once和Times.Never的类型签名? -
您应该能够将其中一个操作数转换为 Func 来解决它
标签: c# moq ternary-operator