код состояния ответа модульного тестирования в контроллере пружины - PullRequest
4 голосов
/ 25 октября 2011

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

  @ExceptionHandler(ExceptionName.class)
  @ResponseStatus(value=HttpStatus.INTERNAL_SERVER_ERROR)
  public String handleIOException(ExceptionName ex, HttpServletRequest request) {
    return "errors.messagepage";
  }

Я могу проверить имя возвращаемого представления.

Я также хочу проверить код статуса ответа. Как я могу это сделать?

Ответы [ 2 ]

5 голосов
/ 25 октября 2011

Вы не можете, не в качестве модульного теста. Аннотация является инструкцией для фреймворка и не является частью вашего исполняемого кода.

Единственный способ проверить это - загрузить DispatcherServlet как часть вашего теста (в действительности, интеграционного теста) или развернуть приложение и протестировать его по HTTP.

Если вы действительно хотите сделать это в модульном тесте, рассмотрите возможность установки кода ответа на HttpServletResponse вручную вместо использования аннотации:

@ExceptionHandler(ExceptionName.class)
public String handleIOException(ExceptionName ex, HttpServletRequest request, HttpServletResponse response) {
  response.setStatus(500)
  return "errors.messagepage";
}
0 голосов
/ 22 ноября 2011

Взгляните на следующий блог.

Spring MVC: контроллеры тестирования интеграции

В нем подробно описывается настройка контекста фиктивного сервлета и WebApplicationContext изнутри JUnit. Используя эту настройку, я могу протестировать набор кодов ответов, используя аннотации для методов контроллера.

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