我有一个BarService
,其上有多个相关的重载update
方法,如下所示:
BarService#update(Bar bar);
BarService#update(Bar bar, boolean checkX);
BarService#update(Bar bar, boolean checkX, boolean checkY);
我想确保在特定测试中调用 none 。目前,我正在这样做:
@Test
public test doFoo_shouldNotUpdateBar() {
setUpTest();
doFoo();
verify(barService, never()).update(any(Bar.class)));
verify(barService, never()).update(any(Bar.class), anyBoolean()));
verify(barService, never()).update(any(Bar.class), anyBoolean(), anyBoolean()));
...
}
我可以通过将所有verify
调用移动到帮助器方法来检查所有重载版本来清理它:
@Test
public test doFoo_shouldNotUpdateBar() {
setUpTest();
doFoo();
verifyBarServiceNeverUpdates(any(Bar.class));
}
但是有没有办法让Mockito在我这里做我想做的事情?基本上,检查是否调用了重载方法而不考虑其参数?
答案 0 :(得分:1)
你绝对不要手动提出"验证规范" list 未使用的方法(按照此处隐含的规模)。明天添加新方法会发生什么?然后你必须转向所有测试并在那里添加新方法。那不是一种可持续的模式!
相反:
verifyNoMorInteractions()
以确保完好,没有其他方法被调用答案 1 :(得分:1)
如果Bar是模拟而你想要绝对没有互动,你可以使用Mockito的verifyZeroInteractions方法,如下所示;
Mockito.verifyZeroInteractions(bar);