2010-02-23 1 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, то это еще не для вас.

Смежные вопросы