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

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


mockService的methodA具有两个参数:List和原始整数。

但这给我一个错误:


  “ lambda表达式中的参数类型不兼容”。


原因是ArgumentMatcher的matchs方法仅接受一个参数。

那么,我该如何验证这种情况?

最佳答案

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

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


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

07-25 21:08