当我运行我的应用程序时,请求对我的一个端点之一有一个验证问题时,响应中有很多有关出了什么问题的信息。看起来与此相似:
{
"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上的相关问题中指出了...
通过Spring Boot来照顾身体,该启动配置了Servlet容器级别的错误映射(请参阅此处,以及以下弹簧MVC测试以模拟Servlet请求/响应运行,没有此类错误映射。
他继续建议一个人使用MockMvc
测试控制器逻辑和映射,但是一个与Spring Boot在Container container Integration中编写来测试由Spring Boot管理的Servlet中的错误映射支持。
如果您觉得Spring Boot应该以某种方式(神奇地)与MockMvc
一起提供错误映射支持,我建议您在GitHub上对Spring Boot Project提出问题。