【问题标题】:How to set attributes with easymock如何使用easymock设置属性
【发布时间】:2018-05-26 17:25:00
【问题描述】:

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

    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 在该行之后为空。为什么??

【问题讨论】:

    标签: session mocking easymock


    【解决方案1】:

    您没有为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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-04
      • 2010-11-19
      • 2013-06-05
      相关资源
      最近更新 更多