@Mock
Object obj;
List<Obejct obj> objs;
Как получить макет объекта obj назад, когда я перебираю objs
?Mockito: как получить фиктивный объект при переходе списка?
@Mock
Object obj;
List<Obejct obj> objs;
Как получить макет объекта obj назад, когда я перебираю objs
?Mockito: как получить фиктивный объект при переходе списка?
Код:
@Mock
private Iterator<YourObject> iteratorMock;
//...
when(yourListMock.iterator()).thenReturn(iteratorMock);
when(iteratorMock.hasNext()).thenReturn(Boolean.TRUE, Boolean.TRUE,
Boolean.TRUE, Boolean.FALSE);
when(iteratorMock.next()).thenReturn(yourMock1, yourMock1, yourMock2);
Как вы можете видеть в коде, насмешливый итератор очень удобный способ вернуть различные издевается для второго, третьего e.t.c вызова.
Таким образом, вы также можете очень легко получить второй вызов, чтобы исключить и третий вызов снова работать, имея возможность проверить, что исключение второго вызова будет обрабатываться, например, и третий результат все равно будет обработан.
Использование настоящего списка - это вариант, но я думаю, что насмехание более мощное и код более сгущен до того, что вам действительно нужно для конкретного теста.
Посмотрите на [этот пост] (http://whyjava.wordpress.com/2012/03/11/quick-tip-on-mockito-mocking-iterator/) – eebbesen
Если у вас нет определенной причины не используйте реальный «Список» (например, он обязательно большой в небольшом модульном тесте), используйте реальный «Список» и добавьте в него макет объектов. Коллекции Java хорошо определены и хорошо протестированы, поэтому вам не нужно их издеваться. –
Этот ответ тоже очень полезен. Https://stackoverflow.com/a/43067304/3800377 –