小编典典

Mockito 可以在不考虑参数的情况下存根方法吗?

all

我正在尝试使用 Mockito 测试一些遗留代码。

我想存根FooDao用于生产的 a 如下:

foo = fooDao.getBar(new Bazoo());

我可以写:

when(fooDao.getBar(new Bazoo())).thenReturn(myFoo);

但明显的问题是,getBar()它永远不会使用我为方法存根的同一个Bazoo对象调用。(诅咒那个new接线员!)

myFoo如果我能以不管参数如何都返回的方式存根该方法,我会喜欢它。如果做不到这一点,我会听取其他解决方法的建议,但我真的很想避免更改生产代码,直到有合理的测试覆盖率。


阅读 91

收藏
2022-04-06

共1个答案

小编典典

when(
fooDao.getBar(
any(Bazoo.class)
)
).thenReturn(myFoo);

或(避免nulls):

when(
  fooDao.getBar(
    (Bazoo)notNull()
  )
).thenReturn(myFoo);

不要忘记导入匹配器(许多其他可用):

对于 Mockito 2.1.0 和更新版本:

import static org.mockito.ArgumentMatchers.*;

对于旧版本:

import static org.mockito.Matchers.*;
2022-04-06