首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EasyMock处理HttpSession

EasyMock处理HttpSession
EN

Stack Overflow用户
提问于 2013-11-20 23:34:43
回答 1查看 1.2K关注 0票数 0

如何让EasyMock与HttpSession一起工作。我正在做以下几件事:

代码语言:javascript
复制
    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");

以下是我的输出:开始

代码语言:javascript
复制
    param: o
代码语言:javascript
复制
    attribute: g
代码语言:javascript
复制
    before session
代码语言:javascript
复制
    fired session

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-21 10:17:15

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

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

因此,您有以下期望:

代码语言:javascript
复制
expect(session.getAttribute("testAttribute")).andReturn("testValue");

但是,你有了这个街区:

代码语言:javascript
复制
if(session.getAttribute("testAttribute")!=null){
    System.out.println("fired session");
    System.out.println((String)session.getAttribute("testAttribute"));
}

所以你需要期待两次,因为你叫了两次。有许多方法可以做到这一点。下列任何一项措施都将有效:

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

以下是每个选项的示例。

代码语言:javascript
复制
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");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20109435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档