如何在@webmvctest中获取Spring Boot默认验证



当我运行我的应用程序时,请求对我的一个端点之一有一个验证问题时,响应中有很多有关出了什么问题的信息。看起来与此相似:

{
  "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提出问题。

最新更新