2010-04-22 230 views
0

我單元測試用SpringMVC我使用類似於下面的代碼的控制器(V 2.5):用SpringMVC測試控制器

public void testParamValidation() { 
    MyController controller = new MyController(); 
    MockHttpServletRequest request = new MockHttpServletRequest(); 
    request.addParameter("foo", "bar"); 
    request.addParameter("bar", baz"); 
    ModelAndView mav = controller .handleRequest(request, new MockHttpServletResponse()); 
    // Do some assertions on mav 
} 

該控制器的AbstractCommandController子類,因此參數被綁定到一個命令bean ,並且任何綁定或驗證錯誤都存儲在實現接口的對象中。

我似乎無法找到任何方式從測試中訪問此Errors,這可能嗎?

謝謝, 唐

回答

1

要測試驗證我的控制器我像做以下。基本上我使用BindException來訪問錯誤。

BindException ex = new BindException(commandObject, "commandName"); 
controller.onBindAndValidate(new MockHttpServletRequest(), commandObject, ex); 
assertEquals(1, ex.getErrorCount()); 
List<ObjectError> errors = (List<ObjectError>)ex.getAllErrors(); 
assertEquals("INVALID_COMMAND", errors.get(0).getCode());