リストをモックしたい
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
正しいリストが返されたことを確認する必要があります。コードスニペットに基づいて必要なものを判断するのは困難です。
または、Tomaszの回答の非BDDバージョン(ただし、適切な場合は、私の回答を受け入れます):
XyzDao xyzDaoMock = mock(xyzDao);
when(xyzDaoMock.getData(id)).thenReturn(Arrays.asList(...));
xyzService.populateData() //...XyzService uses mocked XyzDao