存根/验证使用 FunctionalInterface/MethodReference 参数的调用



我从来没有存根接受函数接口/方法引用作为参数的调用,所以我只是发现除了引用比较之外,与"等于"这些进行比较的明显无能为力。

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

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

有必要在一个简单的测试用例中验证其合作者是否收到了确切的Comparator,因为GOOS书中的这种通信协议测试描述了它们是否可以正确协同工作。 然后跳过使用any(Comparator.class)检查其余测试。 您可以在马丁的博客中进一步阅读:

在第二个测试用例中,我通过使用withAnyArguments了对期望的限制。这样做的原因是第一个测试检查编号是否传递到仓库,因此第二个测试不需要重复测试的该元素。如果以后需要更改顺序的逻辑,则只有一个测试会失败,从而减轻了迁移测试的工作量。事实证明,我本可以完全省略withAnyArguments,因为这是默认设置。

相关内容

  • 没有找到相关文章

最新更新