Tengo clase TaskType. tiene metodo
public Class<? extends TaskParameters> getTypeParameters() { return typeParameters; }a continuación, quiero burlarme de esta clase y burlarme de este método:
final TaskType TEST_PARAMETERS = Mockito.mock(TaskType.class); when(TEST_PARAMETERS.getTypeParameters()).thenReturn(ScheduledParameters.class); Mockito.doReturn(4).when(TEST_PARAMETERS).ordinal();pero tengo un problema:
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);Ayuda, ¿cómo puedo burlarme de este método?
A su pregunta le falta mucha información, sería bueno si pudiera actualizarla. Por ejemplo, podría compartir el código para TaskType .
En primer lugar, parece que TaskType es una enumeración cuando intenta llamar a ordinal() , ¿verdad? Si es el caso, debe recordar que las enumeraciones son definitivas y Mockito no puede burlarse de ellas de forma predeterminada (lea aquí para obtener más información). Si no es una enumeración, puede ignorarla. :)
Con respecto al problema de burlarse getTypeParameters() , no puede hacerlo directamente debido al tipo de borrado (más información aquí ). Sin embargo, puedes resolverlo usando 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();