[英]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.