мой mockMvc (потоковый контент) асинхронный, но я хочу заблокировать его (сделать синхронным) - PullRequest
0 голосов
/ 20 октября 2019

Если я делаю ...

MockMultipartFile multipartFile = new MockMultipartFile("file", "nom.csv", "text/plain", bArray);

mockMvc.perform(MockMvcRequestBuilders.multipart(url)
    .file(multipartFile)
    .andExpect(status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();

Thread.sleep(5000);

return mvcResult.getResponse().getContentAsByteArray(); // array ok

все в порядке, мой массив заполняется и завершается, но если я делаю ...

MockMultipartFile multipartFile = new MockMultipartFile("file", "nom.csv", "text/plain", bArray);

mockMvc.perform(MockMvcRequestBuilders.multipart(url)
    .file(multipartFile)
    .andExpect(status().isOk())
.andDo(MockMvcResultHandlers.print())
.andReturn();

// no Thread.sleep here

return mvcResult.getResponse().getContentAsByteArray(); // array empty !!

мой массив пуст. так как код выполняется слишком быстро!

ВАЖНО, вызываемая конечная точка возвращает StreamingResponseBody

@GetMapping(value = "url", produces = "text/csv")
public ResponseEntity<StreamingResponseBody> getFile(..

Что я могу сделать, чтобы сделать вызов синхронным (заблокированным) и не асинхронным?

...