Проблему, которую вы имеете, легко решить, если вы будете подчиняться Основным принципам насмешек Mockito :
- Не издевайтесь над типами, которые вам не принадлежат
- Не издевайся над ценными объектами
- Не издевайся над всем
- Покажи любовь своим испытаниям!
Пожалуйста, не забудьте также прочитать подробные объяснения, почему вы не должны макет типа [ов], которые вам не принадлежат .
Тизер: особенно для коллекций или связанных с коллекцией классов в JVMне достаточно просто смоделировать один метод, как вы это сделали с next()
, необходимо также последовательно смоделировать hasNext()
, чтобы предотвратить плохие пробуждения.: -)
Таким образом, ваш тест сокращается до чего-то вроде:
@Test
public void update() {
Iterator i = List.of("Hello", "World").iterator();
String result = i.next() + " " + i.next();
assertEquals("Hello World", result);
}
Если вы читаете дальше в подробных документах , Раздел "1. Давайтепроверьте некоторое поведение! " говорит:
Следующие примеры издеваются над списком, потому что большинство людей знакомы с интерфейсом (например, add (), get (), методы clear ()). На самом деле, пожалуйста, не издевайтесь над классом List.Вместо этого используйте реальный экземпляр."