模拟两个参数之一相同的方法的后续调用

时间:2019-06-20 08:49:37

标签: unit-testing junit mockito

在一种我需要进行单元测试的方法中,情况如下:

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的调用?

1 个答案:

答案 0 :(得分:0)

Mockito.when(myClass.getX).thenReturn(SOME_VALUE, SOME_OTHER_VALUE)

这将为第一次调用返回SOME_VALUE,为第二次调用返回SOME_OTHER_VALUE。