FluentAssertions Throw() 未列出使用

FluentAssertions Throw() not listed to use

我正在将 FluentAssertions 与 NUnit 一起使用,我意识到没有列出方法 Throw() 和其他相关方法供我使用。我是否必须安装任何其他软件包才能使用此方法?

我使用的是 NuGet 安装的最新版本 5.4.2。

文档没有说得很清楚,但是 Should().Throw() 应用于 Action (或者,正如@指出的那样ArturKrajewski 在下面的评论中,Funcasync 调用):

Action test = () => throw new InvalidOperationException();
test.Should().Throw<InvalidOperationException>();

因此测试可能如下所示:

public class AssertThrows_ExampleTests {
    [Test]
    public void Should_Throw_Action() {
        var classToTest = new TestClass();

        // Action for sync call
        Action action = () => classToTest.MethodToTest();
        action.Should().Throw<InvalidOperationException>();
    }

    [Test]
    public void Should_Throw_Action_Async() {
        var classToTest = new TestClass();

        // Func<Task> required here for async call
        Func<Task> func = async () => await classToTest.MethodToTestAsync();
        func.Should().Throw<InvalidOperationException>();
    }

    private class TestClass {
        public void MethodToTest() {
            throw new InvalidOperationException();
        }

        public async Task MethodToTestAsync() {
            throw new InvalidOperationException();
        }
    }
}