当前位置: 首页 > 知识库问答 >
问题:

返回可选的方法的Mockito错误

雍志文
2023-03-14
public interface IRemoteStore {

    <T> Optional<T> get(String cacheName, String key, String ... rest);

}

当我用mockito模拟它并在以下情况下使用该方法时:

Mockito.when(remoteStore.get("a", "b")).thenReturn("lol");

我得到了错误:

无法解析方法“then return(java.lang.String)”

Mockito.<Optional<String>>when(remoteStore.get("cache-name", "cache-key")).thenReturn
        (Optional.of("lol"));
String returnCacheValueString = "lol";
Optional<Object> returnCacheValue = Optional.of((Object) returnCacheValueString);
Mockito.<Optional<Object>>when(remotestore.get("cache-name", "cache-key")).thenReturn(returnCacheValue);

但是上面返回的是可选的'<'object'>'和非可选的'<'string'>的实例。

为什么我不能直接返回一个可选的'<'string'>'实例呢?如果可以的话,我该怎么做呢?

共有1个答案

公羊学义
2023-03-14

返回的模拟预期返回类型与被模拟对象的返回类型匹配。

错误是:

Mockito.when(remoteStore.get("a", "b")).thenReturn("lol");

“lol”不是可选 ,因此它不会接受该值作为有效的返回值。

当你这么做的时候它起作用的原因

Optional<Object> returnCacheValue = Optional.of((Object) returnCacheValueString);
Mockito.<Optional<Object>>when(remotestore.get("cache-name", "cache-key")).thenReturn(returnCacheValue);

因为ReturnCacheValue可选的

这很容易修复:只需将其更改为optional.of(“lol”)即可。

Mockito.when(remoteStore.get("a", "b")).thenReturn(Optional.of("lol"));
 类似资料:
  • 我试图模拟一个对象,该对象返回一个带有Mockito的Java可选对象: 当被调用,它返回。 我希望方法返回 返回的任何原因? 方法如下: 以下是Junit:

  • 我已经阅读了很多Java8可选版本,我确实理解这个概念,但在我的代码中尝试实现它时仍然会遇到困难。 虽然我在网上搜索了一些好的例子,但我没有找到一个解释得很好的例子。 我有下一个方法: 这个简单的方法通过传递文件路径来返回文件的md5。正如您所注意到的,如果文件路径不存在(或键入错误),将抛出NoSuchFileException,该方法返回Null。 我希望使用Optional,而不是返回nul

  • 这是我的实际服务方法。在测试时,它给我的变量为空。用户和响应 我试图写一个测试用例和模拟方法findByEmail()和保存(),但同时嘲笑我没有收到用户对象在返回中提到的thenback()和doback()。 有人能帮忙吗。

  • 我是Scala新手,正在为Scala中的Play应用程序编写一些测试。Play应用程序已经用Java编写。 我有一个有一个公共方法进程的刷新服务 其中动作在另一个包中定义为POJO 我已经根据Scala指南编写了测试 当试图模拟此服务时,我使用了以下代码 我从Scala得到以下编译器错误,无法弄清楚这些类型如何是矛盾的 [错误]/home/joey/Projects/sntdb/test/cont

  • 问题内容: 如何通过使用和避免返回值? 例: 问题答案: 要返回可选值的值,或者返回默认值(如果可选值没有值),则可以使用。 请注意,我重写了查找最长名称的代码:您可以直接与比较器比较每个String的长度。可以通过调用键提取器作为方法引用来获得一个这样的比较器。