Я использую MockMvc для проверки своего метода с параметром даты. Параметр помечен @DateValid, но MockMvc не запускает валидатор и возвращает успех, когда я ввожу неправильную дату.
СтудентКонтроллер
public ResponseEntity<?> getStudents(@PathVariable("id") String studentId,
@RequestParam("birthDate") @DateValid String Date) {
//do something
}
Тестовое задание
public class StudentController extends AbstractControllerTest {
@Test
public void testStudents_validRequest() throws Exception {
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("birthDate","aaaa");
MvcResult result = getMvc().perform(get("/student/{studentId}", "test")
.params(params)
.characterEncoding(StandardCharsets.UTF_8.name())
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().json(mapToJson(studentResDto)))
.andReturn();
verify(studentService).getStudentId(anyString(), anyString());
log(log, result);
}
}
Я не понимаю, почему, потому что когда я тестирую с помощью Postman, он работает так, как ожидалось. Почтальон проверяет, а MockMvc нет? Я использую Spring-Boot 2.1.3




Я могу думать о 2 проблемах здесь:
Класс аннотаций проверки не загружен должным образом в вашем тесте. Похоже, это происходит в первую очередь при объединении проверки Spring с проверкой Hibernate (см. также этот вопрос о том, как это исправить.
Ваш тест настроен неправильно. Может быть, вы не полностью загружаете свой контроллер в пробном тесте? Возможно, вы случайно издеваетесь над контроллером?