使用FluentAssertions如何断言异步抛出异常的ParamName参数
FluentAssertions 异步场景异常参数名校验方法
FluentAssertions 本身已经内置了对应的便捷校验能力,无需手动封装 try-catch 实现。
异步场景下和同步写法逻辑完全一致,ThrowAsync 等待后返回的断言对象与同步Throw返回的类型完全相同,支持所有同步场景下的异常属性校验链式操作。
两种推荐写法:
- 更简洁的内置方法写法:
await action.Should().ThrowAsync<ArgumentNullException>().WithParameterName("foo");
- 与同步写法对齐的显式属性校验写法:
(await action.Should().ThrowAsync<ArgumentNullException>()).And.ParamName.Should().Be("foo");
注意:第二种写法需要给 await 的整体表达式加括号,否则编译器会把
.And识别为 awaitable 对象的属性,导致编译报错。
内容的提问来源于stack exchange,提问作者lonix
相关产品推荐
相关产品推荐

