Я хочу протестировать метод java, который имеет расширенные возможности, используя Mockito. Проблема в том, что когда я не знаю, как установить ожидания для расширенного для работы. Следующий код был получен из вопроса без ответа в группе mockito 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()
списка.
Любая помощь будет высоко ценится.