mockito donothing for参数方法

时间:2017-10-25 08:35:32

标签: java junit mockito powermockito

class A{
     public void aa(B b){}
     public void bb(){}
}

对于模拟方法bb(),我使用了doNothing().when(A).bb();

我应该对函数aa()使用什么,因为它有参数。

1 个答案:

答案 0 :(得分:3)

作为一般规则,您不应该需要doNothing,因为默认情况下模拟调用方法时“无”。如果您正在使用间谍而不是模拟,则只需要编写doNothing

在Mockito 1.x中,你可以写

doNothing().when(yourSpyGoesHere).aa(any(B.class));

有效禁用对aa的任何调用。

不幸的是,any的含义在Mockito 2中有所改变,而且这种结构已不再可用。据我所知,Mockito团队没有提供任何等同于any的“旧”含义。

我所知道的最好的是将它与额外的存根结合起来处理参数为null的特殊情况。

doNothing().when(yourSpyGoesHere).aa(any(B.class));
doNothing().when(yourSpyGoesHere).aa(null);