c#三元运算符不工作
本文关键字:运算符 工作 三元 | 更新日期: 2023-09-27 18:07:00
我有一个类的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);
我得到以下编译时错误:
无法确定条件表达式的类型,因为在'method group'和'method group'之间没有隐式转换。
是否有一些简单的我忽略了或者三元操作符不能以这种方式使用?
正如我在这个源文件中看到的,Times.Once
和Times.Never
实际上是静态方法,而不是属性。
为了验证该方法被调用一次或从未被调用,您需要这样使用它:
mockRequestHandler.Verify(x => x.HandleException(exception), Times.Once());
mockRequestHandler.Verify(x => x.HandleException(exception), Times.Never());
因此,使用三元操作符,它将是:
mockRequestHandler.Verify(x => x.HandleException(exception),
(exception is ValidationException) ? Times.Once() : Times.Never());