Ho un'interfaccia con il seguente metodoerrore Mockito con metodo che restituisce opzionale <T>
public interface IRemoteStore {
<T> Optional<T> get(String cacheName, String key, String ... rest);
}
L'istanza della classe che implementa l'interfaccia è chiamata remoteStore.
Quando rido questo con Mockito e utilizzare il metodo in cui:
Mockito.when(remoteStore.get("a", "b").thenReturn("lol");
ottengo l'errore:
Cannot resolved the method 'thenReturn(java.lang.String)'
ho pensato che ha a che fare con il fatto che ottiene restituisce un'istanza di la classe opzionale così ho provato questo:
Mockito.<Optional<String>>when(remoteStore.get("cache-name", "cache-key")).thenReturn
(Optional.of("lol"));
Ma, ottengo questo errore invece:
when (Optional '<'String'>') in Mockito cannot be applied to (Optional'<'Object'>').
L'unica volta che ha funzionato è stato con questo:
String returnCacheValueString = "lol";
Optional<Object> returnCacheValue = Optional.of((Object) returnCacheValueString);
Mockito.<Optional<Object>>when(remotestore.get("cache-name", "cache-key")).thenReturn(returnCacheValue);
Ma soprattutto restituisce un'istanza opzionale '< 'Oggetto'>' e non opzionale '< 'String'>.
Perché non è possibile restituire direttamente un'istanza di "<" Stringa "facoltativa? Se potessi, come dovrei fare per farlo?
Non ti manca una parentesi nel primo pezzo di codice? – npe
Inoltre, non confondere 'java.util.Optional' con' com.google.common.base.Optional', in quanto quest'ultimo deve essere importato qui. – jckuester