Я хочу протестировать java-метод, который имеет улучшенный доступ к нему с использованием Mockito. Проблема в том, что, когда я не знаю, как установить ожидания для расширенного для работы. Следующий код был получен из ответ без ответа в группе google google:
import static org.mockito.Mockito.when;
import static org.testng.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.mockito.Mockito;
import org.testng.annotations.Test;
public class ListTest
{
@Test
public void test()
{
List<String> mockList = Mockito.mock(List.class);
Iterator<String> mockIterator = Mockito.mock(Iterator.class);
when(mockList.iterator()).thenReturn(mockIter);
when(mockIter.hasNext()).thenReturn(true).thenReturn(false);
when(mockIter.next()).thenReturn("A");
boolean flag = false;
for(String s : mockList) {
flag = true;
}
assertTrue(flag);
}
}
Код внутри цикла for никогда не выполняется. Установка ожиданий для итератора не работает, потому что расширение java для не использует итератор списка внутри. Установление ожиданий для метода List.get()
не происходит ни потому, что расширение для реализации, похоже, не вызывает метод get()
в списке.
Любая помощь будет очень оценена.