Mockito:arg表示采用多个参数的方法

时间:2019-06-15 17:47:18

标签: java unit-testing mockito

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

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

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

但这给我一个错误:

  

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

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

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

1 个答案:

答案 0 :(得分:2)

对于每个输入,您应该使用argThat通配符:

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

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