пожалуйста, помогите мне решить следующую проблему: у меня есть класс, в котором несколько полей помечены как @NotNull:
public class SearchCommentRequest {
@NotNull
private Date fromDate;
@NotNull
private Date toDate;
//...
}
Объект, если этот класс передается контроллеру как @RequestBody, также аннотированный @Valid:
@PostMapping(value = "/comment/search", consumes="application/json", produces = "text/csv")
public ResponseEntity<byte[]> searchComments(@RequestBody @Valid SearchCommentRequest searchRequest) {
List<SearchCommentResult> comments = commentService.searchComments(searchRequest);
Итак, я ожидаю, что если fromDate или toDate имеет значение null, будет выдано исключение.
При написании своих интеграционных тестов я решил проверить и этот случай проверки:
@Test
public void searchCommentsValidateRequest() throws Exception {
ObjectMapper mapper = new ObjectMapper();
SearchCommentRequest request = new SearchCommentRequest();
// toDate = null;
request.setFromDate(new Date());
String requestBody = mapper.writer().writeValueAsString(request);
mockMvc.perform(post(COMMENT_SEARCH_ENDPOINT)
.contentType("application/json")
.content(requestBody))
.andDo(MockMvcResultHandlers.print())
.andExpect(status().is(400));
}
Но похоже, что mockMvc игнорирует проверку. В поисках тех же проблем я нашел несколько источников, в которых решение добавляло следующие зависимости:
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>2.2.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.el</artifactId>
<version>3.0.0</version>
</dependency>
Но это не помогло. Я использую Spring 4.3.3.RELEASE и вручную добавляю в pom.xml следующую зависимость:
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>