MockMvc - 预期状态:< 200>但是:< 302>

时间:2016-08-16 04:34:32

标签: java spring mockmvc

在mockmvc测试junit期间发生302错误。 insertBoard类的重定向问题,我该怎么办。 预期状态:< 200>但是:< 302>

@RequestMapping(value="/sample/insertBoard.do")
public ModelAndView insertBoard(CommandMap commandMap,HttpServletRequest request) throws Exception{
    ModelAndView mv = ModelAndView("redirect:/sample/openBoardList.do");
    sampleService.insertBoard(commandMap.getMap(),request);
    return mv;
}

@Test
public void testInsertBoard() throws Exception{
    File fis = new File("c:\\users\\aaa.jpg");
    FileInputStream fi1 = new FileInputStream(fis);
    MockMultipartFile file = new MockMultipartFile("file",fis.getName(),"multipart/form-data",fi1);

    this.mockMvc.perform(MockMvcRequestBuilders.fileupload("/sample/insertBoard.do"))
                .file(file)
                .param("title","title_test")
                .param("contents","contents_test")
                .contentType(MediaType.MULTIPART_FORM_DATA)
                .andExpect(status().isOk());
}

1 个答案:

答案 0 :(得分:2)

您的测试正在验证从/sample/insertBoard.do调用返回的内容。 MockMvc不遵循重定向,因此302有效,因为它意味着浏览器应在返回响应时转到新URL。您可以使用redirectedUrl("/sample/openBoardList.do")代替status().isOk()验证重定向是否正确。

包括一个更新的例子......希望这有助于理解变化:

@Test
public void testInsertBoard() throws Exception{
    File fis = new File("c:\\users\\aaa.jpg");
    FileInputStream fi1 = new FileInputStream(fis);
    MockMultipartFile file = new MockMultipartFile("file",fis.getName(),"multipart/form-data",fi1);

    this.mockMvc.perform(MockMvcRequestBuilders.fileupload("/sample/insertBoard.do"))
            .file(file)
            .param("title","title_test")
            .param("contents","contents_test")
            .contentType(MediaType.MULTIPART_FORM_DATA)
            .andExpect(redirectedUrl("/sample/openBoardList.do"));
}