从模拟方法中的方法返回类.Mockito



我有类TaskType。它有方法

public Class<? extends TaskParameters> getTypeParameters() {
return typeParameters;
}

接下来我想模拟这个类和这个方法:

final TaskType TEST_PARAMETERS = Mockito.mock(TaskType.class);
when(TEST_PARAMETERS.getTypeParameters()).thenReturn(ScheduledParameters.class);
Mockito.doReturn(4).when(TEST_PARAMETERS).ordinal();

但我遇到了问题:

error: no suitable method found for thenReturn(java.lang.Class<com.ucp.shard.bulkops.service.executor.ScheduleExecutorTest.ScheduledParameters>)
when(TEST_PARAMETERS.getTypeParameters()).thenReturn(ScheduledParameters.class);

救命,我该如何嘲笑这种方法?

您的问题缺少很多信息,如果您能更新它就好了。例如,您可以共享TaskType的代码。

首先,似乎TaskType是一个枚举,因为您正试图调用ordinal(),对吧?如果是这种情况,您需要记住枚举是最终的,默认情况下不能被Mockito嘲笑(请阅读此处了解更多信息(。如果它不是枚举,你可以忽略它。:(

关于嘲笑getTypeParameters()的问题,由于类型擦除,您无法直接执行此操作(此处提供更多信息(。然而,您可以使用Mockito Answer:解决问题

final TaskType TEST_PARAMETERS = Mockito.mock(TaskType.class);
final Answer<Class<ScheduledParameters>> answer = invocation -> ScheduledParameters.class;
when(TEST_PARAMETERS.getTypeParameters())
.thenAnswer(answer);
Mockito.doReturn(4).when(TEST_PARAMETERS).ordinal();

最新更新