我正在尝试使用 Mockito 测试一些遗留代码。
我想存根FooDao用于生产的 a 如下:
FooDao
foo = fooDao.getBar(new Bazoo());
我可以写:
when(fooDao.getBar(new Bazoo())).thenReturn(myFoo);
但明显的问题是,getBar()它永远不会使用我为方法存根的同一个Bazoo对象调用。(诅咒那个new接线员!)
getBar()
Bazoo
new
myFoo如果我能以不管参数如何都返回的方式存根该方法,我会喜欢它。如果做不到这一点,我会听取其他解决方法的建议,但我真的很想避免更改生产代码,直到有合理的测试覆盖率。
myFoo
when( fooDao.getBar( any(Bazoo.class) ) ).thenReturn(myFoo);
或(避免nulls):
null
when( fooDao.getBar( (Bazoo)notNull() ) ).thenReturn(myFoo);
不要忘记导入匹配器(许多其他可用):
对于 Mockito 2.1.0 和更新版本:
import static org.mockito.ArgumentMatchers.*;
对于旧版本:
import static org.mockito.Matchers.*;