Estoy escribiendo un caso de prueba que usa un java.beans.PropertyDescriptor
usando Mockito, y quiero simular el comportamiento de getPropertyType()
para devolver un objeto arbitrario Class<?>
(en mi case, String.class
). Normalmente, me gustaría hacer que con sólo invocar:Un extraño caso de borde genérico con Mockito.when() y la inferencia de tipo genérico
// we already did an "import static org.mockito.Mockito.*"
when(mockDescriptor.getPropertyType()).thenReturn(String.class);
Sin embargo, curiosamente, esto no se compila:
cannot find symbol method thenReturn(java.lang.Class<java.lang.String>)
Pero cuando especifico el parámetro de tipo en lugar de depender de la inferencia:
Mockito.<Class<?>>when(mockDescriptor.getPropertyType()).thenReturn(String.class);
todo es Hunky Dory. ¿Por qué el compilador no puede inferir correctamente el tipo de retorno de when() en este caso? Nunca tuve que especificar el parámetro antes así.