【问题标题】:EasyMock handling HttpSessionEasyMock 处理 HttpSession
【发布时间】:2013-11-22 02:28:24
【问题描述】:

如何让 EasyMock 与 HttpSession 一起工作。我正在执行以下操作:

    System.out.println("begin");
    HttpServletRequest request = createMock(HttpServletRequest.class);
    expect(request.getParameter("firstName")).andReturn("o");
    expect(request.getAttribute("lastName")).andReturn("g");
    request.setAttribute("lastName", "g");   

    HttpSession session = createMock(HttpSession.class);
    expect(session.getAttribute("testAttribute")).andReturn("testValue");
    session.setAttribute("testAttribute", "testValue");  //appears to not matter

    replay(request);
    replay(session);

    System.out.println("param: "+request.getParameter("firstName"));
    System.out.println("attribute: "+request.getAttribute("lastName"));
    System.out.println("before session");
    if(session.getAttribute("testAttribute")!=null){    
        System.out.println("fired session");
        System.out.println((String)session.getAttribute("testAttribute"));
    }

    System.out.println("after session");
    System.out.println("end");

以下是我的输出: 开始
参数:o
属性:g
会前
触发会话

任何帮助将不胜感激!提前谢谢你

【问题讨论】:

    标签: java easymock httpsession


    【解决方案1】:

    您的问题措辞很糟糕,您的代码示例与通常使用模拟的方式相去甚远。但是,考虑到疑问的好处,我假设您想知道为什么您的测试没有通过 if 块。

    这本质上是因为你已经调用了两次session.getAttribute("testAttribute"),但只期望它一次。

    所以,你有以下期望:

    expect(session.getAttribute("testAttribute")).andReturn("testValue");
    

    但是,你有这个块:

    if(session.getAttribute("testAttribute")!=null){
        System.out.println("fired session");
        System.out.println((String)session.getAttribute("testAttribute"));
    }
    

    所以你需要期待两次调用,因为你调用了两次。有很多方法可以做到这一点。以下任何一项都可以:

    1. 使用times(int) 方法。
    2. 使用anyTimes() 方法。
    3. 多次调用期望。

    以下是每个选项的示例。

    1. expect(session.getAttribute("testAttribute")).andReturn("testValue").times(2);
    
    2. expect(session.getAttribute("testAttribute")).andReturn("testValue").anyTimes();
    
    3. expect(session.getAttribute("testAttribute")).andReturn("testValue");
       expect(session.getAttribute("testAttribute")).andReturn("testValue");
    

    【讨论】:

    • 道歉示例 - 只是想确保正确设置会话。 anyTimes() 起作用了。最近发布了与 HttpSession 和将请求传递给 Action 方法相关的新问题。
    • 不用担心。乐意效劳。我去看看,看看你的其他问题是否还没有得到回答。
    猜你喜欢
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    相关资源
    最近更新 更多