2013-05-29 189 views
5

我剛開始用的Mockito,我只想做類似的參數的方法:調用的Mockito在模擬的方法

public class Test {  
    public void clearList(List l){ 
     doVeryLOOOONGDatabaseCallll(); 
     l.clear(); 
     return; 
    } 
} 

/// ... 
Test test = mock(Test.class); 
Mockito.when(test.clearList(any(List.class))).then(l => l.clear()); 

有一些暗示這樣的伎倆? 謝謝你的幫助!

+0

不,我想清楚了放在參數列表時,方法'clearList(表L)'被調用。 – Thomas

+0

模擬'doVeryLOOOONGDatabaseCallll()'不'clearList()'。嘲笑不是改變方法內部的行爲;它使它不需要外部依賴。 –

+0

謝謝布賴恩,但它是一種靜態方法,我只是想簡化這些事情。我不能嘲笑它。 – Thomas

回答

16

像這樣的東西應該這樣做(未測試):

doAnswer(new Answer() { 
    public Object answer(InvocationOnMock invocation) { 
     Object[] args = invocation.getArguments(); 
     List<?> list = (List<?>) args[0]; 
     list.clear(); 
     return null; 
    } 
}).when(test).clearList(any(List.class)); 
+0

你很漂亮,我現在測試! – Thomas

+0

它只是工作令人難以置信! – Thomas

+0

你是我的英雄。 – Thomas

相關問題