如何模拟Lambda表达式anymatch返回对象

时间:2019-04-09 16:49:08

标签: java unit-testing mockito

我正在测试一个使用lambda表达式匹配值的java方法。

我想测试条件为真还是假。

employee.getAppraisals().stream().anyMatch(appraisal::isPromoted)

我尝试使用下面的代码来创建模拟单元测试,但是它永远无法正常工作。我跟随的链接是:Use Mockito 2.0.7 to mock lambda expressions

Mockito.when(employee.getAppraisals()
      .stream()
      ..anyMatch(p->p.equals(Mockito.any()))).thenReturn(true)

但是我不知道如何模拟Promotional对象,以使用模仿器将其promotion.isPromoted的bean proeprty值返回为真。

1 个答案:

答案 0 :(得分:0)

您不想模拟整个stream()链。

您想在这里模拟两件事,getAppraisals(),它将返回mock(Appraisal.class)的集合。

然后,这些评估模拟将回答对isPromoted()的方法调用。