我有以下方法与方法错误的Mockito返回可选<T>
public interface IRemoteStore {
<T> Optional<T> get(String cacheName, String key, String ... rest);
}
实现该接口的类的实例被称为remoteStore的接口。
当我嘲笑这个用的Mockito和使用方法时:
Mockito.when(remoteStore.get("a", "b").thenReturn("lol");
我得到的错误:
Cannot resolved the method 'thenReturn(java.lang.String)'
我认为它与该得到回报的一个实例的事实做可选类,所以我试过这个:
Mockito.<Optional<String>>when(remoteStore.get("cache-name", "cache-key")).thenReturn
(Optional.of("lol"));
但是,我得到这个错误,而不是:
when (Optional '<'String'>') in Mockito cannot be applied to (Optional'<'Object'>').
只有它的工作时间是这个:
String returnCacheValueString = "lol";
Optional<Object> returnCacheValue = Optional.of((Object) returnCacheValueString);
Mockito.<Optional<Object>>when(remotestore.get("cache-name", "cache-key")).thenReturn(returnCacheValue);
但上述返回可选“<‘对象的实例’>”,而不是可选的'<‘字符串’>。
为什么我不能直接返回Optional'<'String'>'的实例?如果可以的话,我应该怎么做呢?
您是不是在第一个代码块中缺少一个括号? – npe
此外,不要混淆'java.util.Optional'和'com.google.common.base.Optional',因为后者需要在这里导入。 – jckuester