mam interfejs z następującym sposobembłąd Mockito z metody, która zwraca Opcjonalnie <T>
public interface IRemoteStore {
<T> Optional<T> get(String cacheName, String key, String ... rest);
}
Instancja klasy implementującej interfejs nazywa remoteStore.
Kiedy mock to z Mockito i zastosować metodę, gdy:
Mockito.when(remoteStore.get("a", "b").thenReturn("lol");
pojawia się błąd:
Cannot resolved the method 'thenReturn(java.lang.String)'
myślałem, że ma do czynienia z faktem, że dostać zwraca instancję Opcjonalna klasa, więc próbowałem tego:
Mockito.<Optional<String>>when(remoteStore.get("cache-name", "cache-key")).thenReturn
(Optional.of("lol"));
Ale pojawia się ten błąd:
when (Optional '<'String'>') in Mockito cannot be applied to (Optional'<'Object'>').
Tylko raz to działało było z tym:
String returnCacheValueString = "lol";
Optional<Object> returnCacheValue = Optional.of((Object) returnCacheValueString);
Mockito.<Optional<Object>>when(remotestore.get("cache-name", "cache-key")).thenReturn(returnCacheValue);
Ale przede zwraca instancję opcjonalny '< 'obiektu'>' i nie Opcjonalnie "< 'String'>.
Dlaczego nie można po prostu zwrócić instancji Opcjonalnie "<" Ciąg ">" bezpośrednio? Gdybym mógł, jak mam to zrobić?
Nie brakuje pan nawiasu w pierwszym kawałku kodu? – npe
Również FYI, nie mylić 'java.util.Optional' z' com.google.common.base.Optional', ponieważ ten drugi musi zostać zaimportowany tutaj. – jckuester