Мой запрос 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/