Mockito可以不考虑参数存根方法吗?

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

我想要在生产中使用一个FooDao ,如下所示:

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

我可以写:

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

但显而易见的问题是, getBar()永远不会被调用该方法所用的相同Bazoo对象调用。 (诅咒new操作员!)

我会喜欢它,如果我可以存根方式,它返回myFoo无论参数。 否则,我会听取其他解决方法的build议,但我真的想避免改变生产代码,直到有合理的testing覆盖率。

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

或(避免null ):

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

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

 import static org.mockito.Matchers.*; 

像这样使用:

 when( fooDao.getBar( Matchers.<Bazoo>any() ) ).thenReturn(myFoo); 

在你需要导入Mockito.Matchers之前

http://site.mockito.org/mockito/docs/1.10.19/org/mockito/Matchers.html

anyObject应该适合你的需求。

另外,你总是可以考虑为Bazoo类实现hashCode和equals。 这将使您的代码示例以您想要的方式工作。