我有一个对象的间谍或模拟对象,我想验证一个方法是否被调用问题,我在执行时间而不是编译时间收到方法名
我想做类似的事情:
SimpleObj mockObject= Mockito.mock(SimpleObj.class);
Class myClass = SimpleObj.class;
Method meth = myClass.getMethod("getGuid");
Mockito.verify(meth.invoke(mockObject));
我已经使用了一种解决方法
MockingDetails mockingDetails = Mockito.mockingDetails(mockObject);
Collection<Invocation> invocations = mockingDetails.getInvocations();
List<String> methodsCalled = new ArrayList<>();
for (Invocation anInvocation : invocations) {
methodsCalled.add(anInvocation.getMethod().getName());
}
assertTrue(methodsCalled.contains("getGuid");
问题在我使用 PowerMockito 之前它有效:对于标准方法它有效,但如果该方法是最终的,则该方法不存在mockingDetails.getInvocations()
(但即使在mockingDetails.getInvocations()
实际verify(mock).getGuid()
作品中没有以一种好的方式存在
所以如果你有任何想法/建议会很高兴
问候