如何将 Assert.Throws 与 property get 一起使用?

Val*_*mas 2 c# nunit assert exception

Assert.Throws我希望与属性 get 一起使用。

例如

object shouldFail = myobj[fakeField];
Run Code Online (Sandbox Code Playgroud)

我的尝试,虽然不好,但有助于证明我的需要。

Assert.Throws<MyException>(() => object shouldFail = myobj[fakeField]);
Assert.Throws<MyException>(() => myobj[fakeField]);
Run Code Online (Sandbox Code Playgroud)

我得到的语法错误是 Only assignment, call, decrement, and new object expressions can be used as a statement. 我明白那个。所以我问,如果没有 try/catch,如何测试上面示例中该行代码的异常?

我知道[ExpectedException(typeof(MyException))]

Ale*_*kov 5

你不能真正在 lambda with 表达式中做到这一点,因为你需要吃掉返回值。尝试使用语句块代替:

Assert.Throws<MyException>(() => { object shouldFail = myobj[fakeField];});
Run Code Online (Sandbox Code Playgroud)

注意:不建议get从...抛出