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。 这将使您的代码示例以您想要的方式工作。