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