0

我想模拟一个列表

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

    }
}

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

4

2 回答 2

5

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

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

于 2012-08-30T17:36:57.163 回答
0

或 Tomasz 答案的非 BDD 版本(但如果合适,请接受他对我的回答):

XyzDao xyzDaoMock = mock(xyzDao);
when(xyzDaoMock.getData(id)).thenReturn(Arrays.asList(...));

xyzService.populateData()  //...XyzService uses mocked XyzDao
于 2012-08-30T17:52:44.483 回答