Spring 3 - Тестирование контроллера @Автоматический контекст сервлета
У меня есть контроллер со следующей аннотацией
@Autowired
ServletContext servletContext;
который, кажется, работает нормально и автоматически обновил контекст сервлета.
Однако, когда я пытаюсь запустить junit, я получаю следующее исключение:
org.springframework.beans.factory.BeanCreationException: ошибка при создании bean с именем "ControllerTest": не удалось выполнить инъекцию автоуведомленных зависимостей; Вложенное исключение - org.springframework.beans.factory.BeanCreationException: Не удалось создать поле autwire: javax.servlet.ServletContext
Странная проблема заключается в том, что это произошло только с ServletContext, у меня есть другой beans, автоуведомленный на этом конкретном контроллере, и модульные тесты отлично подходят для них.
Любой совет будет очень полезен.
Ответы
Ответ 1
В качестве состояний @bluefoot вы должны использовать MockServletContext
. Чтобы это работало, вместо автоматической проводки ServletContext вы можете реализовать ServletContextAware
. Spring заметит это при работе в контексте веб-приложения и вставляет ServletContext, а в тесте JUnit вы можете вызвать метод setServletContext для установки MockServletContext.
Ответ 2
Ну, у вас не должно быть реального ServletContext
внутри junit test ambient.
Вы должны использовать MockServletContext.