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

そのセクションでは、それ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 に答える