Модульный тест для Spring Асинхронный пост-запрос возвращает исключение (асинхронный запуск ожидается как истина, но ложь) - PullRequest
0 голосов
/ 05 февраля 2019

Мой запрос POST является асинхронным, потому что я использую spring-data-rest.Теперь у меня возникла проблема при попытке написать контрольный пример для запроса POST.Исключение составляет «Ожидается асинхронный запуск: true, но было: false»

Я прочитал много статей, и все они рассказывают, как выполнить тестовый пример для метода асинхронного GET, но не для метода POST.Я пытаюсь реализовать логику, предложенную в этой статье, для метода GET, но получаю исключение.

private final MediaType contentType = new 
MediaType(MediaType.APPLICATION_JSON.getType(),
        MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8"));

private MockMvc mockMvc;

@Autowired
private WebApplicationContext webApplicationContext;    


@Test
public void addProgramToTestDefaultValuesUsingAsync() throws Exception {

    UserProgram request = getProgramRequest();

    MvcResult result = mockMvc.perform(post("/programs")
            .content(TestUtils.asJsonString(request))
            .contentType(contentType))
            .andDo(print())
            .andExpect(request().asyncStarted())
            .andReturn();

    mockMvc.perform(asyncDispatch(result))
            .andExpect(status().isCreated())
            .andExpect(header().string(CONTENT_TYPE, APPLICATION_JSON_VALUE))
            .andExpect(jsonPath("programRetries").value("3"));
}

Я ожидаю, что он подождет до завершения вызова, а затем захочет проверить ответ на исключенное значение,Но при запросе (). AsyncStarted () происходит сбой вызова, и он возвращает «Async запущен ожидаемый: true, но был: false».Я прочитал много статей, но ничего не решает эту проблему.Любая помощь приветствуется.

Для построения моего теста я использовал следующие статьи:

https://niels.nu/blog/2016/spring-async-rest.html

http://callistaenterprise.se/blogg/teknik/2014/06/23/testing-non-blocking-rest-services-with-spring-mvc-and-spring-boot/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...