2010-06-11 26 views

回答

4

您應該使用Mockito上的驗證方法來執行此操作。通常嘲笑HttpResponse雖然不是一個愉快的經歷。

mockResponse = mock(HttpSR→); 
//… 
verify(mockResponse, times(1)).sendError(..); 

作爲參數傳遞給sendError然後你可以通過匹配器的Mockito,它可以做你所需要的參數中的任何檢查。

0

你可能想看看Mockito spies(第13章)。對於你不能嘲笑的對象,你有時可以檢查它們的內部結構,並用這種方法來存儲某些方法。

如果你可以發佈一些示例代碼,我可以看看它。

+0

在這種情況下,我沒有一個真正的對象。我在做:模擬(HttpServletResponse.class)。在代碼中它調用sendError()方法。也許我只需要爲HttpServletResponse創建自己的模擬實現。我希望Mockito有一個存儲任何時間sendError()被調用,所以我可以稍後檢索結果。 – Dave 2010-06-11 20:39:52

+0

看着間諜文檔告訴我這是多麼簡單: verify(res).sendError(404); 謝謝。 – Dave 2010-06-11 20:48:27

+0

沒問題。我最近一直在和Mockito搏鬥。這是驚人的,除非不是。 – Andy 2010-06-11 21:12:40

1

我想海報想知道,如何檢索傳遞給方法的參數。你可以使用:

// given 
HttpServletResponse response = mock(HttpServletResponse.class); 
ArgumentCaptor<Integer> intArg = ArgumentCaptor.forClass(Integer.class); 
ArgumentCaptor<String> stringArg = ArgumentCaptor.forClass(String.class); 
doNothing().when(response).sendError(intArg.capture(), stringArg.capture()); 

// when (do your test here) 
response.sendError(404, "Not found"); 

// then (do your assertions here, I just print out the values) 
System.out.println(intArg.getValue()); 
System.err.println(stringArg.getValue()); 
相關問題