如何从 Mockito 模拟中获取每个方法的调用?
How can I get invocations per method from a Mockito mock?
我想从 Mockito 模拟中获取每个给定方法的调用次数。
假设我为它声明了一个模拟和两个存根:
when(mock.methodA()).thenReturn(..);
when(mock.methodB()).thenReturn(..);
我可以做类似 Mockito.mockingDetails(mock).getInvocations()
的事情,但它 returns 是所有调用的集合。我只想获得 methodA
的一些调用。
尝试使用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())
此方法将为该模拟 return 集合调用。
有关详细信息,请参阅 here
我想我忽略了 Invocation
对象有一个 getMethod
属性 继承自超类 InvocationOnMock
。因此可以这样做:
Mockito.mockingDetails(mock).getInvocations().stream()
.map(InvocationOnMock::getMethod)
.map(Method::getName)
.filter(methodName -> methodName.equals("methodA"))
不是很整洁,但也够用了。
我想从 Mockito 模拟中获取每个给定方法的调用次数。
假设我为它声明了一个模拟和两个存根:
when(mock.methodA()).thenReturn(..);
when(mock.methodB()).thenReturn(..);
我可以做类似 Mockito.mockingDetails(mock).getInvocations()
的事情,但它 returns 是所有调用的集合。我只想获得 methodA
的一些调用。
尝试使用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())
此方法将为该模拟 return 集合调用。
有关详细信息,请参阅 here
我想我忽略了 Invocation
对象有一个 getMethod
属性 继承自超类 InvocationOnMock
。因此可以这样做:
Mockito.mockingDetails(mock).getInvocations().stream()
.map(InvocationOnMock::getMethod)
.map(Method::getName)
.filter(methodName -> methodName.equals("methodA"))
不是很整洁,但也够用了。