我正在替换Spring Boot REST控制器中对POST请求的输入的手动验证。 JSR-303 Spring Bean验证用于验证请求正文中的实例变量,该方法按预期工作。建议使用哪种方法来验证请求正文中的对象不为空?
我尝试过:
注释整个对象,例如:@NotNull @Valid @RequestBody Foo foo
使用@NotNull注释整个类
我要替换:
@PostMapping...
public ResponseEntity<Map<String, Object>> editFoo(
@RequestBody Foo foo, ...) {
if(foo == null) {
return (new ResponseEntity<>(headers, HttpStatus.BAD_REQUEST));
}
}
具有等效的Bean验证:
@PostMapping...
public ResponseEntity<Map<String, Object>> editFoo(
@Valid @RequestBody Foo foo, ...) {
...
}
我尝试通过以下方式对控制器方法进行单元测试
:// Arrange
Foo foo = null;
String requestBody = objectMapper.writeValueAsString(foo);
// Act + assert
mockMvc
.perform(
post("/end_point")
.contentType("application/json")
.content(requestBody))
.andExpect(status().isBadRequest());
我期望由@ControllerAdvice处理此MethodArgumentNotValidException异常,但是执行单元测试时出现HttpMessageNotReadableException。 我的问题: