gpt4 book ai didi

java - 如何在java中模拟返回Iterator的同一个类中的方法

转载 作者:行者123 更新时间:2023-11-30 05:42:48 26 4
gpt4 key购买 nike

我正在尝试对一个方法 getFruitItemMap() 进行单元测试,该方法调用同一个类中的另一个方法 getAllItemsBelongingToFruit ,其返回类型为 Iterator 。我尝试使用 Mockito.spy() 模拟此方法,但不确定如何返回迭代器。我检查了其他答案stack overflow here ,但看起来我在这里遗漏了一些东西。

class FruitItemImpl {

Map<String, Fruit> getFruitItemMap() {
Map<String, Fruit> fruitMap = new HashMap<>();
Iterator<Fruit> items = getAllItemsBelongingToFruit("Apple");

while (items.hasNext()) {
Fruit fruitItem = items.next();
fruitMap.put(fruitItem.getID(), fruitItem);
}
return fruitMap;
}

public Iterator<Fruit> getAllItemsBelongingToFruit(String fruit) {
//some logic that returns an iterator
}

这是单元测试:

    @Test
public void testGetFruitItemMap() {
Map<String, Fruit> fruitItemMap = new HashMap<>();
FruitItemImpl doa1 = Mockito.spy(dao);
Mockito.doReturn(**new Iterator<Fruit>**).when(doa1).getAllItemsBelongingToFruit("Apple") //Here
Assert.assertEquals(fruitItemMap.size(), doa1.getFruitItemMap().size());
}

由于我是 Mockito 和单元测试世界的新手,因此我试图了解它。在这种情况下,我不确定如何使mockito返回迭代器Mockito.doReturn()

最佳答案

最简单的方法是拥有适当的Fruit对象的集合,并从中返回一个Iterator。在您的情况下,您可以从您在测试中使用的 fruitItemMapvalues() 返回一个迭代器:

@Test
public void testGetFruitItemMap() {
Map<String, Fruit> fruitItemMap = new HashMap<>();
FruitItemImpl doa1 = Mockito.spy(dao);
Mockito.doReturn(fruitItemMap.values().iterator()) // Here!
.when(doa1).getAllItemsBelongingToApple("Apple");
Assert.assertEquals(fruitItemMap.size(), doa1.getFruitItemMap().size());
}

关于java - 如何在java中模拟返回Iterator的同一个类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55371743/

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