2015-12-14 51 views
2

大家好我正在使用Spring MVC框架,我想測試我的控制器。其中一個使用Post方法爲了從視圖中檢索數據,我不知道如何測試它。如何使用MockMvc對象測試Controller,它使用Post方法檢索數據?

這是我的控制器:

@RequestMapping(value="/index", method=RequestMethod.POST) 
public String postMessage(@RequestParam("newLetter") String lttr, Model model) 
{ 
    Letter newLetter = lttr; 
    this.letterService.insertLetter(newLetter); 
    this.allLetters = this.letterService.getAllLetters(); 
    model.addAttribute("allLetters", this.allLetters); 
    return "redirect:/index"; 
} 

這是我想,這顯然不工作的考驗。

@Test 
@WithMockUser("randomUser") 
public void aTest() throws Exception 
{ 
    Letter lttr = new Letter(); 
    mockMvc.perform(post("/index").with(testSecurityContext())) 
            .andExpect(status().isOk()) 
            .requestAttr("newLetter", lttr) 
            .andExpect(model().attributeExists("allLetters")); 
} 

回答

3

我想你想:

mockMvc.perform(post("/index").with(testSecurityContext()) 
           .param("newLetter", lttr)) 
           .andExpect(status().isOk()) 
           .andExpect(model().attributeExists("allLetters")); 

注意param而不是requestAttr在第三行。這是您在控制器方法中查找的參數,具有@RequestParam註釋,而不是屬性。

相關問題