Как получить ActionContext от Struts 2 во время приемочных испытаний?

Я пишу приемочные тесты (тестирую поведение), используя cucumber-jvm, в приложении со Struts 2 и Tomcat в качестве моего контейнера сервлетов. В какой-то момент в моем коде мне нужно получить пользователя из Struts 2HttpSession, созданныйHttpServletRequest.

Так как я делаю тесты, а не запускаю Tomcat, у меня нет активной сессии, и я получаюNullPointerException.

Вот код, который мне нужно позвонить:

public final static getActiveUser() {
    return (User) getSession().getAttribute("ACTIVE_USER");
}

И метод getSession:

public final static HttpSession getSession() {
    final HttpServletRequest request (HttpServletRequest)ActionContext.
                          getContext().get(StrutsStatics.HTTP_REQUEST);
    return request.getSession();
}

Честно говоря, я не знаю много о Struts 2, поэтому мне нужна небольшая помощь. Я смотрел на этоогурец-JVM со встроенным котом пример, но я изо всех сил пытаюсь понять.

Я также смотрел на этоStruts 2 Junit Tutorial, К сожалению, это не очень хорошо охватывает всеStrutsTestCase особенности и это простейшие варианты использования (все это довольно бесполезное руководство).

Итак, как мне выполнить мой приемочный тест, как если бы пользователь использовал приложение?

ОБНОВИТЬ:

Спасибо Стивену Бенитесу за ответ!

Я должен был сделать две вещи:

Дразнить HttpServletRequest, как предложено,Дразнить HttpSession, чтобы получить атрибут, который я хотел.

вот код, который я добавил в мои тесты cucumber-jvm:

public class StepDefs {
    User user;
    HttpServletRequest request;
    HttpSession session;

    @Before
    public void prepareTests() {
        // create a user

        // mock the session using mockito
        session = Mockito.mock(HttpSession.class);
        Mockito.when(session.getAttribute("ACTIVE_USER").thenReturn(user);

        // mock the HttpServletRequest
        request = Mockito.mock(HttpServletRequest);
        Mockito.when(request.getSession()).thenReturn(session);

        // set the context
        Map<String, Object> contextMap = new HashMap<String, Object>();
        contextMap.put(StrutsStatics.HTTP_REQUEST, request);
        ActionContext.setContext(new ActionContext(contextMap));
    }

    @After
    public void destroyTests() {
        user = null;
        request = null;
        session = null;
        ActionContext.setContext(null);
    }

}

Ответы на вопрос(1)

Ваш ответ на вопрос