我正在尝试使用 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/