我有一个单元测试,验证了一些代码抛出异常和其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)
不幸的是,这不能编译。
正如这里所说:
target.Invoking(t => t.CallSomethingThatThrows())
.ShouldThrow<WebServiceException>()
.Where(e => e.StatusCode == 400)
.Where(e => e.ErrorMessage == "Bla bla...");
Run Code Online (Sandbox Code Playgroud)