Mockito - 方法内的模拟对象

时间:2013-06-01 08:50:00

标签: java tdd junit4 mockito

我有一个返回车辆清单的方法。像这样:

 public List<Vehicle> getVehicles() {

        List<Vehicle> vehicles=vehicleDAO.getAllVehicles();

        for (Vehicle v : vehicles){//NullPointerException
            //some bussines logic...
        }       
        return vehicles;

}

这是我的测试:

@Test
public void testShowVehicles() {
    when(vehicleDAO.getAllVehicles()).thenReturn(listVehiclesMock);
    List<Vehicle> vehicles= service.getVehicles();//NullPointerException
    assertEquals(listVehicleMock, vehicles);
}

当我运行它时,我得到NullPointerException,因为Vehicle不存在。 当我有旧时尚for循环它通过测试,但现在我用forEach循环替换我在测试中得到错误。 那么我该如何模拟对象Vehicle?

1 个答案:

答案 0 :(得分:2)

对于每个循环使用给定iterator()的{​​{1}}方法。然后使用以这种方式获得的迭代器来迭代集合。不幸的是,这个模拟列表的方法返回null,这会导致Iterable。要用于每个循环语法,您还必须将NullPointerException方法绑定到结果。