如何测试返回 zip 文件的弹簧控制器?

Ann*_*cks 4 spring

我有一个返回 zip 文件的控制器。我想将 zip 文件与预期的 zip 进行比较,但我不确定如何从我的结果中获取文件。这是我到目前为止所拥有的:

public class FileControllerTest extends ControllerTest {

  @InjectMocks
  private FileController controller;

  @Autowired
  private WebApplicationContext context;

  private MockMvc mvc;

  @Before
  public void initTests() throws IOException {
    MockitoAnnotations.initMocks(this);
    mvc = MockMvcBuilders.webAppContextSetup(context).build();
  }

  @Test
  public void shouldReturnZip() throws Exception {
    MvcResult result = mvc
        .perform(get(SERVER + FileController.REQUEST_MAPPING + "/zip").accept("application/zip"))
        .andExpect(status().isOk()).andExpect(content().contentType("application/zip"))
        .andDo(MockMvcResultHandlers.print()).andReturn();

  }
}
Run Code Online (Sandbox Code Playgroud)

小智 8

您可以从MvcResult .getResponse().getContentAsByteArray(). 从那里您可以将 a 转换ByteArrayInputStream为 aFileZipFile进行比较。