首页 > 解决方案 > 如何从 Mockito 模拟中获取每个方法的调用?

问题描述

我想从 Mockito 模拟中获取每个给定方法的多次调用。

假设我为它声明了一个模拟和两个存根:

when(mock.methodA()).thenReturn(..);
when(mock.methodB()).thenReturn(..);

我可以做类似的事情,Mockito.mockingDetails(mock).getInvocations()但它返回所有调用的集合。我只想获得一些调用methodA

标签: javaunit-testingjunitmockito

解决方案


尝试使用 verify(),例如:

verify(mock, times(N)).methodA();
verify(mock, times(N)).methodB();

N检查调用编号时。

要获取有关特定方法的数据,请仅使用:

 new DefaultMockingDetails(service).getInvocations()
                    .stream()
                    .map(InvocationOnMock::getMethod)
                    .filter(s -> s.getName().equals("methodName"))
                    .collect(toList())

此方法将返回该模拟的集合调用。

有关更多信息,请参见此处


推荐阅读