Mockito:arg那用于采用多个参数的方法



我正在尝试使用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。特别是如果您必须在同一条件语句中使用两个参数。

相关内容

  • 没有找到相关文章

最新更新