在我需要单元测试的方法中,情况如下:
Predicate<MyClass> predicate1 = (MyClass myClass) -> myClass.getX().equals(SOME_VALUE);
List<MyClass> targets = this.filterMyClass(listOfMyClass, predicate1);
if (CollectionUtils.isEmpty(targets)) {
Predicate<MyClass> predicate2 = (MyClass myClass) -> myClass.getX().equals(SOME_OTHER_VALUE);
targets = this.filterMyClass(listOfMyClass, predicate2);
}
可以看出,filterMyClass()
被调用两次,第一个参数相同(列表(,而第二个参数不同(谓词(。
如何模拟对 filterMyClass 的调用?
Mockito.when(myClass.getX).thenReturn(SOME_VALUE, SOME_OTHER_VALUE)
这将为第一次调用返回SOME_VALUE,为第二次调用返回SOME_OTHER_VALUE。