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