【问题标题】:Stubing/Verifying a call with a FunctionalInterface/MethodReference argument使用 FunctionalInterface/MethodReference 参数存根/验证调用
【发布时间】:2017-11-02 23:26:10
【问题描述】:

我从来不需要存根一个接受函数接口/方法引用作为参数的调用,所以我只是发现除了引用比较之外,显然无法与“等于”这些比较。

那么在测试期间如何处理这种情况呢?我们是否必须使用 any() 我们想要或不想要它?

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

【问题讨论】:

    标签: java junit mockito stubbing functional-interface


    【解决方案1】:

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

    在第二个测试用例中,我使用withAnyArguments 放松了对期望的约束。这样做的原因是第一个测试检查数字是否传递到仓库,所以第二个测试需要不重复测试的那个元素。如果稍后需要更改顺序的逻辑,那么只有一个测试会失败,从而减轻了迁移测试的工作量。事实证明,我可以完全放弃 withAnyArguments,因为这是默认设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 2017-02-18
      • 2019-01-12
      相关资源
      最近更新 更多