【发布时间】:2019-03-27 07:18:36
【问题描述】:
我正在尝试对一个方法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()。
【问题讨论】:
标签: java unit-testing mocking mockito