0
私は自分のメソッドをテストしたいと思います。アイテムと行のベクトルをそれぞれ調べる必要があります。Mockitoを使って各ループを正しくモックする方法は?
Itemクラス(テスト内)からgetRows()を呼び出すと、常に得たい結果ベクトルを作成しました。
問題は、テストのgetRowsメソッドの結果が常に空であるため、ここでdoReturn文が正しく動作していないことです。
私は何かに間違っていますか?モックベクターは試験方法のパラメータではなく、テスト対象クラスのフィールドであるとして
class MyServiceTest {
@Mock
private Item mockedItem;
@Mock
private Row mockedRow;
@InjectMocks
@Spy
private MyService myService;
@Test
public void testMyMethod() {
Vector<Row> rows = new Vector<Row>();
Row row = new Row();
rows.add(row);
doReturn(rows).when(mockedItem).getRows();
...
//some code to test the service
}
}
class MyService {
protected SomeObject myMethod(Vector<Item> items) {
for(Item item : items) {
for(Row row : item.getRows()) {
//cannot get here while debugging the test
//some code
}
}
...
}
}
class Item {
...
public Vector<Row> getRows(){
//return some vector of rows
}
}
'mockedItem'が使用されている場所でテストコードを共有できますか?私はむしろ、それが嘲笑されたサービスではないと疑い、 'doReturn'は動作していないということではない。 – Mureinik
クラス 'Row'のコードも表示できますか? –
私は正しく理解しているかどうかはわかりませんが、どこでも使用されていません。 doReturnの後、私はサービスを呼び出してからアサートします。 –