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

在返回新对象时使用mockito

薛朝
2023-03-14

我的实现中有以下代码行:

myService.getTypes(new TypeRequest(myList.stream().map(Object::toString)
                        .collect(Collectors.toList())))

我试着在我的测试课上模仿上述内容,如下所示:

when(myService.getTypes(new TypeRequest(Lists.newArrayList("15", "16"))))
                .thenReturn(Lists.newArrayList(type1, type2));
when(myService.getTypes(new TypeRequest(Lists.newArrayList("25", "26"))))
                .thenReturn(Lists.newArrayList(type3, type4));

但是当我调试测试代码时,我可以看到myService。getTypes正在返回一个空列表。有什么问题?

还有,有没有办法使用args来简化上述模拟?我发现的只是使用传递到方法中的参数,而不是传递到方法中的参数。

共有1个答案

彭正谊
2023-03-14

找到解决方案:

when(myService.getTypes(any(TypeRequest.class)))
    .thenAnswer(invocationOnMock -> {
        TypeRequest r = invocationOnMock.getArgument(0);
        //if r contains "15"
            return Lists.newArrayList(type1, type2);
        } else {
            return Lists.newArrayList(type3, type2);
        }
});
 类似资料:
  • 我们有一个方法,其中我们收到一个

  • 当我在一个涉及Java8新流的项目中工作时,我注意到当我对流调用时,它返回的是而不是。尽管我很惊讶,但我开始深入研究Java 8的源代码,找不到为什么他们没有将实现为的任何理由。这背后有什么道理吗,还是仅仅是一种(在)一致性? 编辑1:我在回答中注意到很多人说这是不可能的,但是这个代码段编译并返回预期的结果?

  • 有人能告诉我为什么未定义this.userDataObserver的变量会导致.next()函数失败吗?在这里撞我的头。 我需要将一些数据推送到可以从其他组件访问的服务变量中(尽量避免使用本地存储)。 有人能帮我理解为什么这个变量在类中被明确设置时是未定义的吗? }

  • 我使用了以下SQL语句。getSingleResult()从EntityManager获取对象:

  • 问题内容: 为了获取今天时间对象的本地开始时间,我提取了YMD并重建了新的日期。看起来像是在跳动。我还会错过其他一些标准库功能吗? 代码也可以在http://play.golang.org/p/OSRl0nxyB7上运行: 问题答案: 问题的标题和正文都要求“今天开始是当地的(芝加哥)”。问题中的函数正确地做到了这一点。接受功能的权利要求是更好的解决方案,但它返回一个不同的结果; 它不会在今天开始

  • 我使用mysql存储过程来检索对象列表。这可能吗? 我在看这篇文章 问题: > 如何使用结果集检索select语句中的对象列表? 如何将结果集映射到对象列表? CREATE DEFINER=@PROCEDURE(ININT,OUTINT,OUTINT,OUTVARCHAR(50),OUTVARCHAR(50),OUTFLOAT 内部连接(从rate中选择aid,r.rate,re.country_