我有一个单元测试,用于验证某些代码会抛出异常和 两个属性具有预期值。我是这样做的:
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...");
不幸的是,这不会编译。
答案 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);