簡體   English   中英

EasyMock處理HttpSession

[英]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"));
}

所以你需要兩次調用,因為你調用它兩次。 有很多方法可以做到這一點。 以下任何一種都可以:

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

以下是每個選項的示例。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM