小编Yu *_*hen的帖子

Mockito错误,返回Optional <T>的方法

我有一个接口与以下方法

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'>'的实例?如果可以,我该怎么做呢?

java mockito optional

24
推荐指数
1
解决办法
4万
查看次数

Guice绑定绑定子类吗?

所以我有一个模块,它将接口与实现类绑定在一起.

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)

guice

1
推荐指数
1
解决办法
1651
查看次数

标签 统计

guice ×1

java ×1

mockito ×1

optional ×1