首页 > 解决方案 > Spring MockMvc 和流式异步结果

问题描述

我正在测试一个流式异步端点,我用它来逐行生成非常大的文件(甚至超过 200MB)。

现在我想测试它们。但是我现在能够测试它们的唯一方法是

@Test
public void consumeStreamedResponse() throws Exception {

    MvcResult asyncResult = mvc.perform(get("/api/data/stream?from=0&limit=10000000"))
                               .andExpect(request().asyncStarted())
                               .andReturn();

    mvc.perform(asyncDispatch(asyncResult))
       .andExpect(status().isOk())
       .andDo(result -> {
           String str = result.getResponse()
                              .getContentAsString();
           System.out.println(str);
       });
}

问题是,通过这种方式,所有响应都被转换为唯一的String,而我想逐行使用响应作为InputStream.

我怎样才能做到这一点?

标签: spring-bootstreammockmvc

解决方案


推荐阅读