MockMvc не может проверить параметр @DateValid

Я использую 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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
51
1

Ответы 1

Я могу думать о 2 проблемах здесь:

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

  2. Ваш тест настроен неправильно. Может быть, вы не полностью загружаете свой контроллер в пробном тесте? Возможно, вы случайно издеваетесь над контроллером?

Другие вопросы по теме