我正在尝试对一个方法进行单元测试,该方法调用另一个返回类型位于同一类中的方法。我试图使用 来模拟此方法,但不确定如何返回迭代器。我在这里检查了堆栈溢出的其他答案,但看起来我在这里遗漏了一些东西。getFruitItemMap()getAllItemsBelongingToFruitIteratorMockito.spy()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和单元测试世界的新手,因此试图弄清楚它。在这种情况下,我不确定如何使mojito返回迭代器。Mockito.doReturn()
1 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
最简单的方法是收集适当的对象,并从中返回 。在你的例子中,你可以从你在测试中使用的 's 返回一个迭代器:FruitIteratorfruitItemMapvalues()
@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());
}
添加回答
举报
0/150
提交
取消
