Spring 3 - Тестирование метода контроллера @ModelAttribute - PullRequest
2 голосов
/ 03 февраля 2011

Я пытаюсь проверить контроллер следующим способом:

@RequestMapping(value="/export-csv")    
public ModelAndView exportCSV(@ModelAttribute("gsscModel") GsscModel gsscModel) {

И я хотел бы знать, как я могу создать модульное тестирование для тестирования этого. На данный момент я использую:

    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setRequestURI("/support/export-csv");
    //request.setMethod("GET");
    new AnnotationMethodHandlerAdapter().handle(request, 
            new MockHttpServletResponse(), this.controller);

Однако я всегда получаю следующую ошибку:

org.springframework.web.HttpSessionRequiredException: требуется атрибут сеанса 'gsscModel' - не найден в сеансе

Я пытался найти информацию об этом в документации, но ничего не нашел.

Спасибо

1 Ответ

1 голос
/ 03 февраля 2011

Чтобы повторить мои комментарии, я предлагаю вам не тестировать ваш код должным образом. Одно из преимуществ подхода к аннотациям Spring 3 заключается в том, что он значительно упрощает модульное тестирование, поскольку обычно нет необходимости возиться с фиктивными объектами запросов и ответов.

В вашем случае ваш модульный тест может напрямую вызывать метод exportCSV и обрабатывать возвращаемое ModelAndView соответствующим образом. На самом деле нет необходимости использовать классы инфраструктуры, такие как AnnotationMethodHandlerAdapter, для вызова метода, который только усложняет ситуацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...