2016-08-16 172 views
0

mockmvc测试junit期间发生302错误。 insertBoard类的重定向问题,我该怎么做。 状态预计:< 200>却被:< 302>MockMvc - 预计状态:<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()); 
} 

回答

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")); 
} 
+0

对不起。我无法理解。 只是我想testInsertBoard测试成功。 – kim

相关问题