在mockmvc测试junit期间发生302错误。
insertBoard类的重定向问题,我该怎么办。
预期状态:,但之前是:
@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());
}
最佳答案
您的测试正在验证从调用/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"));
}