我有一个控制器,提供下载文件的功能.
@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方法的调用.