gpt4 book ai didi

c# - 断言后如何获取异常对象?

转载 作者:行者123 更新时间:2023-12-04 15:29:50 24 4
gpt4 key购买 nike

例如,我的单元测试中有如下代码。

Action act = () => subject.Foo2("Hello");

act.Should().Throw<InvalidOperationException>()

断言后,我想对抛出的异常再运行几个处理步骤,并对处理结果进行断言。例如:

 new ExceptionToHttpResponseMapper()
.Map(thrownException)
.HttpStatusCode.Should().Be(Http.Forbidden);

我可以像这样写一个 try-catch,

var thrownException;
try
{
subject.Foo2("Hello");
}
catch(Exception e)
{
thrownException = e;
}

// Assert

但我想知道是否有更好的方法。

最佳答案

根据此处提供的文档,有几个选项

https://fluentassertions.com/exceptions/

AndWhich 似乎提供了对抛出异常的访问。

还有一个 Where 函数可以在异常上应用表达式。

act.Should().Throw<InvalidOperationException>()
.Where(thrownException => HasCorrectHttpResponseMapping(thrownException));

HasCorrectHttpResponseMapping

bool HasCorrectHttpResponseMapping(InvalidOperationException thrownException)
{
var httpResponse = new ExceptionToHttpResponseMapper().Map(thrownException);
return httpResponse.HttpStatusCode == Http.Forbidden;
}

关于c# - 断言后如何获取异常对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61449127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com