如何链接多个'和'使用FluentAssertions检查异常时

时间:2016-11-14 15:14:05

标签: fluent-assertions

我有一个单元测试,用于验证某些代码会抛出异常 两个属性具有预期值。我是这样做的:

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

            exception.StatusCode.Should().Be(400);
            exception.ErrorMessage.Should().Be("Bla bla...");

我不喜欢断言的外观,必须在三个陈述中完成。是否有一种优雅的方式在一个声明中做到这一点?我的第一个直觉是使用这样的东西:

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

不幸的是,这不会编译。

2 个答案:

答案 0 :(得分:1)

如上所述here

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

答案 1 :(得分:-1)

不是一个直接的答案,但我注意到,如果您只检查一个异常属性,可以使用更流畅的语法:

target.Invoking(t => t.CallSomethingThatThrows())
      .ShouldThrow<WebServiceException>()
      .Which.StatusCode.Should().Be(400);