对于派生类型,流畅的断言 Should().ThrowExactlyAsync 应该失败,但事实并非如此

ana*_*ciu 3 c# unit-testing fluent-assertions

以下Func委托抛出一个ArgumentNullException

Func<Task> act = async () => await _someService
            .someMethod(1, 2, 3, 4);
Run Code Online (Sandbox Code Playgroud)

使用Fluent 断言,断言:

act.Should().ThrowExactlyAsync<ArgumentException>();
Run Code Online (Sandbox Code Playgroud)

应该失败:

断言当前Func抛出确切类型的异常TException(而不是派生异常类型)。

ArgumentNullException派生自ArgumentException,给定描述,断言应该失败,但它通过了。

这是一个错误还是我滥用了这个?

Dav*_*idG 7

由于ThrowExactlyAsync返回 a Task,除非您执行以下操作,否则您实际上并没有做任何事情await

await act.Should().ThrowExactlyAsync<ArgumentException>();
Run Code Online (Sandbox Code Playgroud)