Как установить атрибуты с easymock - PullRequest
0 голосов
/ 26 мая 2018

Мне нужно смоделировать запрос с сеансом, сеанс имеет атрибут (проект)

    HttpServletRequest req = createNiceMock(HttpServletRequest.class);
    HttpSession session = createNiceMock(HttpSession.class);
    session.setAttribute("currentProject", project); // project is not null here
    expect(req.getSession()).andReturn(session);            
    replay(req);

Но тест выдает NullPointerException в следующем коде

HttpSession session = request.getSession();
Project p = (Project) session.getAttribute("currentProject");

Проект p является нулевым после этой строки.Почему ??

1 Ответ

0 голосов
/ 28 мая 2018

Вы ничего не записываете для getAttribute.session это издевательство.Так что вы ничего не можете установить на это.Вам нужно записывать вызовы.

Рабочая версия этого кода будет

HttpServletRequest req = createNiceMock(HttpServletRequest.class);
HttpSession session = createNiceMock(HttpSession.class);
expect(session.getAttribute("currentProject").andReturn(project);
expect(req.getSession()).andReturn(session);
replay(req, session);

Обратите внимание, что я рекомендую использовать Spring-test вместо EasyMock, если вы находитесь в контексте Spring.Это делает тестирование намного проще.См. мой ответ на другой вопрос.

...