【发布时间】:2017-03-29 07:48:14
【问题描述】:
我克隆了this project 并将Hotel.java 更改为:
@Entity
public class Hotel implements Serializable {
.
.
@javax.validation.constraints.NotNull
//@Column(nullable = false)
private String address;
.
.
}
当发出类似这样的帖子请求时:
curl -H "Content-Type: application/json" -X POST -d '{}' http://localhost:8080/api/hotels
回复是:
{
"timestamp": 1479213670718,
"status": 500,
"error": "Internal Server Error",
"exception": "javax.validation.ConstraintViolationException",
"message": "org.springframework.web.util.NestedServletException: Request processing failed; nested exception is javax.validation.ConstraintViolationException: Validation failed for classes [sample.data.rest.domain.Hotel] during persist time for groups [javax.validation.groups.Default, ]\nList of constraint violations:[\n\tConstraintViolationImpl{interpolatedMessage='may not be null', propertyPath=address, rootBeanClass=class sample.data.rest.domain.Hotel, messageTemplate='{javax.validation.constraints.NotNull.message}'}\n]",
"path": "/api/hotels"
}
然后我为这个案例写了测试:
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles("scratch")
public class SampleDataRestApplicationTests {
.
.
@Test
public void createHotel_andExpectServerError() throws Exception {
this.mvc.perform(post("/api/hotels").content("{}"))
.andExpect(status().is5xxServerError());
}
}
当我运行测试时,它会抛出这个错误:
org.springframework.web.util.NestedServletException:
Request processing failed; nested exception is javax.validation.ConstraintViolationException:
Validation failed for classes [sample.data.rest.domain.Hotel] during persist time for groups [javax.validation.groups.Default, ]
List of constraint violations:[
ConstraintViolationImpl{
interpolatedMessage='may not be null',
propertyPath=address, rootBeanClass=class sample.data.rest.domain.Hotel,
messageTemplate='{javax.validation.constraints.NotNull.message}'}
]
所以它失败了,但我希望它会通过。
似乎处理 ConstraintViolationException 的默认 exceptionHandler 通常在测试中不可用。
谢谢。
【问题讨论】:
标签: java spring-boot integration-testing spring-data-jpa