我想模拟一个清单

private Item populateData(Item i) {
    List<Person> groupIdList = xyzDao.getData(id);
    for (Person p: groupIdList) {

    }
}


我想通过模拟groupIdList来测试该函数如何执行?

最佳答案

Mockito的官方文档有点误导。您不应该模拟列表(没有太多逻辑的数据容器),而应该模拟行为。在您的情况下,xyzDao.getData(id)是行为。模拟xyzDao并返回一些假数据:

//given
XyzDao xyzDaoMock = mock(xyzDao);
//inject to XyzService class under test
given(xyzDaoMock.getData(id)).willReturn(Arrays.asList(...));

//when
xyzService.populateData()  //...XyzService uses mocked XyzDao

//then


在随后的部分中,您应该verify()调用xyzDao或确保返回正确的列表。很难根据您的代码片段说出您需要什么。

10-07 12:58