我从来没有必要将一个接受函数接口/方法引用的调用作为参数存根,所以除了参考比较之外,我只是发现明显无法与“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
答案 0 :(得分:1)
有必要验证其协作者是否已在一个简单的测试用例中收到了Comparator
,因为GOOS这本书中的通信协议测试描述了他们是否将正确合作。然后使用any(Comparator.class)
跳过检查其余测试。您可以在Martin's blog中进一步阅读:
在第二个测试案例中,我使用
withAnyArguments
放宽对期望的约束。原因是第一次测试检查数字是否传递到仓库,因此第二次测试需要不重复测试的那个元素。如果稍后需要更改订单的逻辑,那么只有一个测试将失败,从而减轻了迁移测试的工作量。事实证明,我可以完全离开withAnyArguments
,因为这是默认值。