gpt4 book ai didi

java - 如何使用 Mockito 模拟被调用两次且第二个方法调用的参数是第一个方法调用的输出的方法

转载 作者:行者123 更新时间:2023-11-30 02:35:32 25 4
gpt4 key购买 nike

public List<Object> getDummyData(String testString ) {      
final List<String> result1 = utility.getData(testString);
final List<String> result2 = utility.getData(result1.get(0).split(~)[0]);
// Processing of result2 and few more method calls
return someListOfObject;
}

我需要模拟具有上述方法调用的方法。当我使用下面的代码时:

MainApp mock= Mockito.mock(MainApp.class);
List<String> mockList = Mockito.mock(ArrayList.class);
doReturn(mockList).when(mock).getData("str");

在第二个方法调用中运行测试用例时,我收到 IndexOutOfBoundsException。

最佳答案

该异常的原因是该行:

 utility.getData(result1.get(0).split(~)[0]);

您想要分割第一次调用的结果。但您没有指定有关该模拟的任何内容!当您不指定任何内容时,当在该模拟上调用方法时,mockito 将仅返回虚拟/空/空数据。

而且你不必这样做。您绝对模拟列表对象。您只需创建一个适合您的测试的列表即可;喜欢

List<String> dummyList = Arrays.asList("whatever", "strings", "you need");

要说得非常清楚: mock 是你的最后手段。您使用它来控制您需要控制的对象;并且无法通过任何其他方式进行控制。

并且列表非常容易控制:通过创建一个包含您需要在该列表中的内容的列表。

问题的另一部分:您可以轻松地指示 Mockito 在重复调用同一方法时返回不同的结果;例如如图 here .

关于java - 如何使用 Mockito 模拟被调用两次且第二个方法调用的参数是第一个方法调用的输出的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43206285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com