2013-05-29 193 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

相关问题