我正在嘗試對一個方法進(jìn)行單元測試,該方法調(diào)用另一個返回類型位于同一類中的方法。我試圖使用 來模擬此方法,但不確定如何返回迭代器。我在這里檢查了堆棧溢出的其他答案,但看起來我在這里遺漏了一些東西。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貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個贊
最簡單的方法是收集適當(dāng)?shù)膶ο螅闹蟹祷?。在你的例子中,你可以從你在測試中使用的 '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
提交
取消