使用 Mockito spy 在不指定确切参数的情况下模拟方法

Using Mockito spy to mock a method without specifying the exact argument

我有一个用例,我必须测试调用内部方法的真实方法。这个内部方法必须被嘲笑。例如,

Class Sample {
   boolean method(Foo foo) {
     return innerMethod(new Goo(foo));
   }
}

所以我想做以下事情。

Sample sample = Mockito.spy(new Sample());
Foo foo = new Foo();
doReturn(false).when(sample).innerMethod(new Goo(foo));

assertEquals(false, sample.method(foo));

问题是,我想,内部方法永远不会被模拟,因为参数 Goo 不是相同的对象。我该如何解决这个问题?

使用Matcher.any()方法。

doReturn(false).when(sample).innerMethod(Matcher.any(Goo.class));