내 방법을 테스트하고 싶습니다. 각 항목과 행의 벡터를 조롱하여 각각을 처리해야합니다.Mockito를 사용하여 각 루프를 올바르게 조롱하는 방법?
필자는 (테스트 내에서) Item 클래스에서 getRows()를 호출 할 때 항상 얻고 자하는 결과 벡터를 준비했습니다.
문제는 doReturn 문이 올바르게 작동하지 않기 때문에 테스트의 getRows 메소드 결과가 항상 비어 있다는 것입니다.
내가 뭔가 잘못 됐나요? 조롱 벡터는 시험 방법의 파라미터 시험 클래스가 아닌 필드가 그대로
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 후에 나는 서비스를 호출 한 다음 주장한다. –