Я пытаюсь выполнить модульное тестирование метода getFruitItemMap()
, который вызывает другой метод getAllItemsBelongingToFruit
с типом возвращаемого значения Iterator
в том же классе. Я пытаюсь смоделировать этот метод, используя Mockito.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 и Unit Testing, я пытаюсь разобраться в этом. Я не уверен, как заставить mockito возвращать итератор Mockito.doReturn()
в этом случае.