【发布时间】:2019-03-05 21:39:19
【问题描述】:
我正在尝试使用不完整数据测试创建实体,如下所示:
@Test
public void postVisitor_withIncompleteData_shouldFailWithBadRequest() throws Exception {
Visitor emptyVisitor = new Visitor();
mockMvc.perform(post("/visits")
.contentType(APPLICATION_JSON)
.content(objectMapper.writeValueAsString(visitor))
).andExpect(status().isBadRequest());
}
但我的测试失败并出现此错误:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [com.reweb.Visitor] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{interpolatedMessage='cannot be empty', propertyPath=email, rootBeanClass=class com.reweb.Visitor, messageTemplate='{javax.validation.constraints.NotEmpty.message}'}
]
如何测试这是一个错误的请求?
添加@Test(expected = ConstraintViolationException.class) 也不起作用。
【问题讨论】:
-
您可能没有在控制器中绑定验证器。你的控制器中有这个吗 @InitBinder private void initBinder(WebDataBinder binder) { binder.setValidator(constraintValidator); }
-
我认为,您需要显示
Visitor的代码以及如何使用@Valid或@Validated。org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler不会自动处理 -ConstraintViolationException。
标签: spring-boot junit spring-data-rest spring-rest mockmvc