2015-10-18 85 views
0

我正在測試一些使用Mockito間諜來監視實際對象的代碼。例如,我創建了一個Map調用大小()方法&,並驗證調用了size()方法。Mockito間諜功能

我有下面的代碼:

Map<String, String> mapTest = new HashMap<>(); 
Map<String, String> spyMap = spy(mapTest); 
mapTest.size(); 
verify(spyMap, times(1)).size(); 

當我運行測試,我得到的是有一個與大小()方法沒有互動的錯誤。如果我調用spyMap.size(),那麼這個測試通過罰款。 我應該怎麼做來監控'mapTest'

+0

是的。更正了錯字 – AFH

回答

2

Mockito中驗證方法背後的想法是驗證MOCKED或PARTIALLY MOCKED對象是否完成了某些操作。您無法真正監控未通過Mockito創建的真實對象。但是,您可以使用通過Mockito創建的間諜對象。間諜是部分嘲笑。模擬的其餘部分保持原來的一樣。這個想法是,你然後重寫你想要存儲的方法。所以從某種意義上說,如果你不覆蓋任何東西,當你不覆蓋任何方法時,你有一個原始對象的副本。所以要真正測試size方法被調用的次數,你可以創建一個HashMap的間諜,然後注入它,讓你的代碼在它上面工作,看看它被調用了多少次。通常這迫使我們重構我們的代碼以使其可測試。您可能需要找到一種注入HashMap的方法,以便可以插入間諜,並稍後對其應用一個斷言。

+0

非常好的有用信息。 – kswaughs