如何让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");以下是我的输出:开始
param: o attribute: g before session fired session任何帮助都将不胜感激!提前谢谢你
发布于 2013-11-21 10:17:15
您的问题措辞很糟糕,您的代码示例与通常使用模拟的方式相去甚远。但是,考虑到怀疑的好处,我假设您想知道为什么您的测试没有通过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"));
}所以你需要期待两次,因为你叫了两次。有许多方法可以做到这一点。下列任何一项措施都将有效:
times(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");https://stackoverflow.com/questions/20109435
复制相似问题