使用FunctionalInterface / MethodReference参数对Stubing / Verifying进行调用

时间:2017-06-01 17:37:18

标签: java junit mockito stubbing functional-interface

我从来没有必要将一个接受函数接口/方法引用的调用作为参数存根,所以除了参考比较之外,我只是发现明显无法与“equals”进行比较。

那么在测试过程中如何处理这种情况呢?我们是否必须使用我们想要的任何()?

Comparator<String> comparator = Comparator.naturalOrder();

when(myColaborator.isCalledWith(comparator)).thenReturn("foo"); //This is not gonna work as long as the real call does not use theat very same reference

1 个答案:

答案 0 :(得分:1)

有必要验证其协作者是否已在一个简单的测试用例中收到了Comparator,因为GOOS这本书中的通信协议测试描述了他们是否将正确合作。然后使用any(Comparator.class)跳过检查其余测试。您可以在Martin's blog中进一步阅读:

  

在第二个测试案例中,我使用withAnyArguments 放宽对期望的约束。原因是第一次测试检查数字是否传递到仓库,因此第二次测试需要不重复测试的那个元素。如果稍后需要更改订单的逻辑,那么只有一个测试将失败,从而减轻了迁移测试的工作量。事实证明,我可以完全离开withAnyArguments,因为这是默认值。