在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());
}
答案 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"));
}