[英]EasyMock handling HttpSession
如何让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
属性:g
在会议之前
解雇会议
任何帮助将不胜感激! 先感谢您
您的问题措辞非常严重,您的代码示例与通常使用的模拟方式相差甚远。 但是,鉴于怀疑的好处,我假设您想知道为什么您的测试没有通过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");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.