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

2022-08-31 04:53:59

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

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

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

我可以写:

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

但显而易见的问题是,从来没有用我存根方法的同一个对象来调用。(诅咒那个操作员!getBar()Bazoonew

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


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

或 (为避免 s):null

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

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

对于 Mockito 2.1.0 及更高版本:

import static org.mockito.ArgumentMatchers.*;

对于旧版本:

import static org.mockito.Matchers.*;

答案 2

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

anyObject()应该适合您的需求。

此外,您始终可以考虑实现和针对类。这将使您的代码示例按所需方式工作。hashCode()equals()Bazoo


推荐