Тестирование ControllerAdvice с AutoConfigureMockMvc и CompletableFuture - PullRequest
0 голосов
/ 16 мая 2019

Я добавил контроллер REST, возвращающий CompletableFutures в проект, используя ControllerAdvice для преобразования исключений в ошибки DTO.

Мой контроллер не генерирует исключения, заключая их в сбойные CompletableFutures и возвращая их.

При запуске полного приложения и ручном тестировании оно работает, как и ожидалось, но в моих тестах mockMvc не запускает подсказки и всегда возвращает HTTP 2xx.

Есть идеи, почему?

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Я выяснил, что мой тест был неправильным (или, другими словами, среда тестирования не спроектирована так, как я ожидал;)

При тестировании контроллеров, возвращающих CompletableFutures, необходимо использовать asyncDyspatch, как в

https://github.com/spring-projects/spring-framework/blob/master/spring-test/src/test/java/org/springframework/test/web/servlet/samples/standalone/AsyncTests.java

0 голосов
/ 16 мая 2019

Если у вас есть автономная настройка MockMvc, то вам нужно указать совет контроллера, который будет использоваться (если есть) при создании экземпляра mockMvc, следующим образом:

MockMvc mockMvc = MockMvcBuilders.standaloneSetup(controller)
            .setControllerAdvice(new YourControllerAdvice())
            .build();

Причина этогов том, что у вас нет контекста для весны, чтобы обнаружить совет контроллера.

...