我需要使用会话模拟请求,会话具有属性(项目)
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在该行之后为空。为什么?
答案 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另一个问题。