我正在尝试使用Mockito的argThat API:
verify(mockService).methodA(argThat((List ids, int b) -> ids.get(0).equals("123")));
mockService有methodA
它接受两个参数:一个List和一个原始整数。
但这给了我一个错误:
"lambda 表达式中不兼容的参数类型"。
原因是 ArgumentMatcher 的 match 方法只接受一个参数。
那么,如何对此类场景进行验证呢?
您应该为每个输入使用 argThat
通配符:
verify(mockService).methodA(argThat((List ids) -> ids.get(0).equals("123"))
, argThat((int b) -> b < 1);
我还建议您使用@ArgumentCaptor
,这是argThat
的替代方案,并使自定义匹配更加清晰:javadoc。特别是如果您必须在同一条件语句中使用两个参数。