2012-01-10 17 views
2

我有一個HttpServlet,我試圖編寫測試並嘲笑了ServletOutputStream:ServletOutputStream outputStream = mock(ServletOutputStream.class);。我需要在使用println的servlet中獲取寫入outputStream的內容。即在servlet中,我有這樣的代碼:從println讀取模擬的ServletOutputStream

ServletOutputStream out = response.getOutpuStream(); 
out.println("foo"); 

所以,我想測試「foo」。我試圖說when(outputStream.println()).then...,但這不起作用,因爲println()是一個無效的方法。我也調查過HttpServletResponseWrapper,但一直沒有找到解決方案。想法?我正在使用Mockito。

+0

什麼是你用嘲諷的API? – 2012-01-10 21:13:14

+2

您是否想確保將「foo」寫入流中?這將是(在Mockito中):verify(outputStream).println(eq(「foo」)); – 2012-01-10 21:13:18

+0

@JBNizet Mockito – 2012-01-10 21:24:57

回答

2

如果你想看看「foo」被傳遞給println方法,你可以這樣做:

verify(outputStream).println(eq("foo")); 
+0

謝謝,這解決了我的問題。我想補充一點,這表明我只看到「foo」一次。 'verify(outputStream,atLeastOnce())。println(eq(「foo」));'for「foo」> = 1時間有效。 – 2012-01-10 21:39:52

+0

請注意,這裏不需要'eq()';你可以寫'verify(outputStream).println(「foo」);'或'verify(outputStream,atLeastOnce())。println(「foo」);' – 2012-01-10 23:15:50

+0

什麼包是verify和eq的? – 2016-07-27 19:29:06