如何获取带有错误请求状态代码的详细信息(自定义错误消息)?这样我就可以对其进行断言

Posted

技术标签:

【中文标题】如何获取带有错误请求状态代码的详细信息(自定义错误消息)?这样我就可以对其进行断言【英文标题】:How to I get the detail (custom error message) returned with a bad request status code? So that I can do an ASSERT on it 【发布时间】:2021-11-28 16:00:34 【问题描述】:

您好,我正在设置一些集成测试(使用 Xunit),我想运行一个 Assert 来检查是否返回了正确的自定义错误消息。

这是我需要获取的数据在以下响应中,请参见图片... 详细信息:“用户名必须是唯一的”不要担心这条消息稍后会被修改为更有用,我只是想让它先工作

Required Info

这是当前代码...

        //Act

        response = await _httpClient.PostAsync("CompleteUserSetup", formContent);

        //Assert

        Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode) ; //Bad request should be returned
        //TODO: check custom error message is correct

所以希望...

ASSERT.Equal("用户名必须唯一",一些代码从响应中获取详细信息)

【问题讨论】:

这能回答你的问题吗? Getting content/message from HttpResponseMessage @Fabio 嗨,谢谢你的建议,这不是我所需要的,但引导我去弄清楚:-D 【参考方案1】:

好的,所以我想出了如何获取我需要的数据。我只需要将结果转换为一个对象,然后我就可以提取我需要的详细数据。

var resultModel = await System.Text.Json.JsonSerializer.DeserializeAsync<Result>(response.Content.ReadAsStream(), JsonSerializerHelper.DefaultDeserialisationOptions);

var errorMessage = resultModel.detail;

【讨论】:

以上是关于如何获取带有错误请求状态代码的详细信息(自定义错误消息)?这样我就可以对其进行断言的主要内容,如果未能解决你的问题,请参考以下文章

http 错误代码解释 && nginx 自定义错误

当请求 API 的自定义标头错误时,将 http 状态代码设置为 417

jQuery Ajax - 如何错误地获取响应数据

Azure应用服务错误405 - 无法完成请求。 (不允许的方法)

ajax应用程序的php自定义错误代码

SpringCloud请求异常处理封装BusinessException自定义异常类