我有一个接口与以下方法
public interface IRemoteStore {
<T> Optional<T> get(String cacheName, String key, String ... rest);
}
Run Code Online (Sandbox Code Playgroud)
实现接口的类的实例称为remoteStore.
当我用mockito模拟它并在以下时使用该方法:
Mockito.when(remoteStore.get("a", "b")).thenReturn("lol");
Run Code Online (Sandbox Code Playgroud)
我收到错误:
无法解析方法'thenReturn(java.lang.String)'
我认为这与get返回Optional类的实例这一事实有关,所以我尝试了这个:
Mockito.<Optional<String>>when(remoteStore.get("cache-name", "cache-key")).thenReturn
(Optional.of("lol"));
Run Code Online (Sandbox Code Playgroud)
但是,我得到了这个错误:
当Mockito中的(可选'<'String'>')无法应用于(可选'<'对象'>')时.
它唯一有效的时间是:
String returnCacheValueString = "lol";
Optional<Object> returnCacheValue = Optional.of((Object) returnCacheValueString);
Mockito.<Optional<Object>>when(remotestore.get("cache-name", "cache-key")).thenReturn(returnCacheValue);
Run Code Online (Sandbox Code Playgroud)
但上面返回一个Optional'<'Object'>'的实例,而不是Optional'<'String'>.
为什么我不能直接返回Optional'<'String'>'的实例?如果可以,我该怎么做呢?
所以我有一个模块,它将接口与实现类绑定在一起.
bind(ILocalStore.class).to(LocalStore.class);
Run Code Online (Sandbox Code Playgroud)
此绑定是否还会注入以下构造函数:
@Inject
public LocalStoreUser(LocalStore localstore) {
this.localstore = localstore
}
Run Code Online (Sandbox Code Playgroud)