如何使用easymock设置属性

时间:2018-05-26 17:25:01

标签: session mocking easymock

我需要使用会话模拟请求,会话具有属性(项目)

    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 :(得分:0)

您没有为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上下文中,我建议使用spring-test而不是EasyMock。它使测试更加简单。请参阅my answer另一个问题。