Jak uzyskać ActionContext z Struts 2 podczas testów akceptacyjnych?

Piszę testy akceptacyjne (testowanie zachowania) za pomocą ogórka-jvm, na aplikacji z Struts 2 i Tomcat jako moim Servlet Container. W pewnym momencie mojego kodu muszę pobrać użytkownika z Struts 2HttpSession, stworzony przezHttpServletRequest.

Ponieważ wykonuję testy i nie używam Tomcata, nie mam aktywnej sesji i otrzymujęNullPointerException.

Oto kod, który muszę zadzwonić:

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

I metoda getSession:

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

Szczerze mówiąc, niewiele wiem o Struts 2, więc potrzebuję trochę pomocy. Patrzyłem na toogórek-jvm z osadzonym kocurem przykład, ale staram się zrozumieć.

Ja też na to patrzyłemSamouczek Struts 2 Junit. Niestety, nie obejmuje to zbyt dobrze wszystkichStrutsTestCase funkcje i jest to najprostszy przypadek użycia (wszystkie rozważane, całkiem bezużyteczny poradnik).

Jak więc mogę uruchomić test akceptacji, tak jakby użytkownik korzystał z aplikacji?

AKTUALIZACJA:

Dziękujemy Stevenowi Benitezowi za odpowiedź!

Musiałem zrobić dwie rzeczy:

Jak zasugerowano, wyszykuj HttpServletRequest,Wyszykuj HttpSession, aby uzyskać żądany atrybut.

Oto kod, który dodałem do moich testów ogórka:

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);
    }

}

questionAnswers(1)

yourAnswerToTheQuestion