使用FluentAssertions检查异常时如何链接多个“ And”

mab*_*ead 5 fluent-assertions

我有一个单元测试,验证了一些代码抛出异常2个属性具有预期值。这是我的方法:

var exception = target.Invoking(t => t.CallSomethingThatThrows())
                    .ShouldThrow<WebServiceException>()
                    .And;

            exception.StatusCode.Should().Be(400);
            exception.ErrorMessage.Should().Be("Bla bla...");
Run Code Online (Sandbox Code Playgroud)

我不喜欢必须在三个语句中完成的断言外观。有没有一种优雅的方法可以在一个语句中做到这一点?我的第一个直觉是使用这样的东西:

target.Invoking(t => t.CallSomethingThatThrows())
                    .ShouldThrow<WebServiceException>()
                    .And.StatusCode.Should().Be(400)
                    .And.ErrorMessage.Should().Be("Bla bla...");
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不能编译。

mab*_*ead 9

正如这里所说:

target.Invoking(t => t.CallSomethingThatThrows())
      .ShouldThrow<WebServiceException>()
      .Where(e => e.StatusCode == 400)
      .Where(e => e.ErrorMessage == "Bla bla...");
Run Code Online (Sandbox Code Playgroud)

  • 这种方法不会导致非常简单的失败异常吗? (3认同)