如何使用ArgumentCaptor验证写入HttpServletResponse的字节

我有一个控制器,提供下载文件的功能.

@ResponseBody
public void downloadRecycleResults(String batchName, HttpServletResponse response) throws Exception {
    File finalResultFile = null;
    // code here generates and initializes finalResultFile for batchName
    response.setContentType("application/octet-stream");
    response.setHeader("Content-Disposition", "attachment;filename=" + finalResultFile.getName());
    IOUtils.copy(new FileReader(finalResultFile), response.getOutputStream());
}

我无法弄清楚如何编写测试,我可以验证写入响应的内容.我已经使用了ArgumentCaptor很多但不知何故它似乎不适合这里.

controller.downloadRecycleResults("batchName", mock(HttpServletResponse.class));
verify(response).getOutputStream(); // but how to capture content?

解决方法:

一种方法是模拟响应及其输出流,然后验证对模拟输出流的write方法的调用.

上一篇:使用Mockito 2.0.7模拟lambda表达式


下一篇:java – 抛出异常后继续