Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EasyMock处理HttpSession_Java_Easymock_Httpsession - Fatal编程技术网

Java EasyMock处理HttpSession

Java EasyMock处理HttpSession,java,easymock,httpsession,Java,Easymock,Httpsession,如何轻松使用HttpSession。我正在做以下工作: System.out.println("begin"); HttpServletRequest request = createMock(HttpServletRequest.class); expect(request.getParameter("firstName")).andReturn("o"); expect(request.getAttribute("lastName")).andReturn("

如何轻松使用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
会话前
激发会话


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

你的问题措辞很糟糕,你的代码示例与mock通常的使用方式相去甚远。然而,考虑到怀疑的好处,我假设您想知道为什么您的测试没有通过
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"));
}
所以你需要期待两次电话,因为你打了两次。有很多方法可以做到这一点。以下任何一项都可以:

  • 使用
    时间(int)
    方法
  • 使用
    anyTimes()
    方法
  • 多次调用期望值
  • 下面是这些选项的示例

    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方法。不用担心。很乐意帮忙。我叫甘德,看看你的另一个问题是否还没有回答。