gpt4 book ai didi

java - 如何在 @WebMvcTest 中获取 Spring Boot 默认验证响应?

转载 作者:行者123 更新时间:2023-12-02 02:28:52 25 4
gpt4 key购买 nike

当我运行应用程序并且对我的端点之一的请求存在验证问题时,响应包含大量有关到底出了什么问题的信息。它看起来类似于:

{
"timestamp": "2017-11-23T13:18:05.923+0000",
"status": 400,
"error": "Bad Request",
"exception": "org.springframework.web.bind.MethodArgumentNotValidException",
"errors": [
{
"codes": [
"Size.sensorParameters.openText",
"Size.openText",
"Size.java.lang.String",
"Size"
],
"arguments": [
{
"codes": [
"sensorParameters.openText",
"openText"
],
"arguments": null,
"defaultMessage": "openText",
"code": "openText"
},
20,
1
],
"defaultMessage": "size must be between 1 and 20",
"objectName": "sensorParameters",
"field": "openText",
"rejectedValue": "xewrewrwerwer weew ewewewrwe ew wewewewerew we ewrwerwe ewr ",
"bindingFailure": false,
"code": "Size"
}
],
"message": "Validation failed for object='sensorParameters'. Error count: 1",
"path": "/api/monitors/89c94880-9423-4990-892b-6bbd8e90b1e6/sensors"
}

如果我在 @WebMvcTest 中对此进行测试,我确实会得到相同的 400 响应,但响应正文为空。

为了在单元测试中获得相同的行为,我应该做一些额外的设置吗?我正在使用从测试框架获得的@Autowired MockMvc 对象,目前我这边没有任何额外的设置。

最佳答案

正如 Rossen Stoyanchev(MockMvc 的发明者)在 JIRA 的相关问题中指出的那样...

the body is taken care of by Spring Boot which configures error mappings at the Servlet container level (see here and since Spring MVC Test runs with a mock Servlet request/response, there is no such error mapping.

他接着建议,使用 MockMvc 来测试 Controller 逻辑和映射,但使用 Spring Boot 编写容器内集成来测试错误映射支持在 Spring Boot 管理的 Servlet 中。

如果您认为 Spring Boot 应该以某种方式(神奇地)与 MockMvc 结合提供错误映射支持,我建议您在 GitHub 上针对 Spring Boot 项目提出问题。

关于java - 如何在 @WebMvcTest 中获取 Spring Boot 默认验证响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47456723/

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