2010-02-23 66 views
2

粘合劑/屬性編輯我有一個期望的模型和結合結果如何測試彈簧上使用2.5控制器

@RequestMapping(method = RequestMethod.POST) 
    public ModelAndView submit(@ModelAttribute(「user」) User user, BindingResult bindingResult) { 
    //do something 
} 

如何測試的結合結果的方法的註釋控制器?如果我用一個用戶和一個綁定結果調用方法,那麼我不測試綁定過程。我認爲那裏有一些需要MockHttpServletRequest並返回模型和綁定結果的東西,有什麼建議嗎?

回答

4

您是否試圖測試綁定(發生在調用此方法之前)還是您試圖測試「提交」處理程序方法?

您可以測試像這樣的東西的結合:

@Test 
    public void testHandlerMethod() { 

     final MockHttpServletRequest request = new MockHttpServletRequest("post", "/..."); 
     request.setParameter("firstName", "Joe"); 
     request.setParameter("lastName", "Smith"); 

     final User user = new User(); 
     final WebDataBinder binder = new WebDataBinder(user, "user"); 
     binder.bind(new MutablePropertyValues(request.getParameterMap())); 

     final ModelAndView mv = controllerTestInstance.submit(user, binder.getBindingResult()); 

     // Asserts... 

    }
+0

這就是我一直在尋找的,謝謝!在我的控制器中,我做了一堆registerCustomEditor設置,所以我想這應該繼續我可以從控制器和測試中使用的類。 – albemuth

+0

如果您將自定義編輯器註冊到initBinder方法中,則可以在調用測試中的處理程序方法之前調用它。 –

+0

感謝兄弟真的很有幫助 – 2011-01-29 19:45:15

3

你可能會發現spring-test-mvc項目,你想達到什麼目的非常相關。該項目今天可用,整體上非常簡單,但是會有一些變化,所以如果你需要一個穩定的API,那麼這還不適合你。