使用 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));
我有一个用例,我必须测试调用内部方法的真实方法。这个内部方法必须被嘲笑。例如,
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));