Интеграционное тестирование в Spring: Spring MVC Test Framework, асинхронные запросы
Асинхронные запросы Servlet 3.0, поддерживаемые в Spring MVC, работают, выходя из потока контейнера сервлета и позволяя приложению вычислять ответ асинхронно, после чего выполняется асинхронная отправка для завершения обработки в потоке контейнера сервлета. В Spring MVC Test можно протестировать асинхронные запросы, сначала подтвердив созданное значение async, затем вручную выполнив асинхронную отправку и, наконец, проверив ответ. Ниже приведен пример теста для методов контроллера, которые возвращают DeferredResult, Callable или реактивный тип, например Reactor Mono: @Test void test() throws Exception { MvcResult mvcResult = this.mockMvc.perform(get("/path")) .andExpect(status().isOk()) // Статус ответа на проверку не изменился .andExpect(request().asyncStarted()) // Асинхронная обработка должна быть запущена .andExpect(request().asyncResult("body")) // Подождите и подтвердите результат async .andReturn(); ...