java - Mockito:argThat 用于采用多个参数的方法

标签 java unit-testing mockito

我正在尝试使用 Mockito 的 argThat API:

verify(mockService).methodA(argThat((List ids, int b) -> ids.get(0).equals("123")));

mockService 有 methodA,它接受两个参数:一个 List 和一个原始整数。

但这给了我一个错误:

"Imcompatible parameter types in lambda expression".

原因是 ArgumentMatcher 的 matches 方法只接受一个参数。

那么对于这样的场景我该如何进行验证呢?

最佳答案

您应该为每个输入使用 argThat 通配符:

verify(mockService).methodA(argThat((List ids) -> ids.get(0).equals("123"))
          , argThat((int b) -> b < 1);

我还建议您使用 @ArgumentCaptor,它是 argThat 的替代品,并使自定义匹配更加清晰:javadoc 。特别是如果您必须在同一个条件语句中使用这两个参数。

关于java - Mockito:argThat 用于采用多个参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56612781/

相关文章:

java - 将创建的 JLabels 索引到 2D Jlabel 数组中

unit-testing - SonarQube:查看失败测试的详细信息

java - 使用测试类的构造函数进行依赖注入(inject)

java - 指定要模拟的通用接口(interface)的类

Java ExecutorService - 任务/可调用不取消/中断

java - 更改 JTextArea 中不同行的字体

java - 在另一个组件内绘制组件

php - 模拟 HTTP 请求进行单元测试

unit-testing - 有趣/写得很好的单元测试阅读(文学编程)

java - 无法解析 Mockito 单元测试中的占位符