我想模拟一个清单
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
或确保返回正确的列表。很难根据您的代码片段说出您需要什么。