返回值已经很明确了. 那么如何验证往下层(下游)输出的值呢?
使用 ArgumentCaptor
https://static.javadoc.io/org.mockito/mockito-core/3.1.0/org/mockito/Mockito.html#15
ArgumentCaptor<Person> argument = ArgumentCaptor.forClass(Person.class);
Mockito.verify(ldbIntegrationServiceImpl,Mockito.times(2)).put(argument1.capture(), argument2.capture(), argument3.capture(), argument4.capture());
Assert.assertEquals(keyContent, argument2.getValue());
多次调用
如果想获取第一次函数调用的参数. argument1.getAllValues().get(0)
如果是想获取第三次的结果argument2.getAllValues().get(2)
泛型,类型不同
如果接口是泛型,每次对象都不同,那么就把forClass(Object.class) 或者 参考 【Java】Mockito捕获多次调用的方法的参数 来实现.
异常
1. 遇到这种问题:
But was 2 times. Undesired invocation:
说明总共执行了两次. 而不是一次,增加Mockito.times(2),Mockito.verify(ldbIntegrationServiceImpl,Mockito.times(2))