Я хочу проверить этот список объектов, используя Junit и Mockito.
Если петля сформирована так:
List<Message> owner = new ArrayList<>();
for (int i = 0; i < messageStorage.getMessage(us.getName()).size(); i++) {
owner.add(new Message(us.getName() + " - " + messageStorage.getMessage(us.getName()).get(i).getText(),
messageStorage.getMessage(us.getName()).get(i).getTime()));
}
listOfMessages.addAll(owner);
Тест в mockito работает нормально!
@Test
public void onTheWallTest() {
when(clock.now()).thenReturn(parse("2014-12-03T10:15:30.00Z"));
User follows = new User("someFollower");
Mockito.when(userStorage.getUser(Matchers.anyString())).thenReturn(follows);
wall.onTheWall();
Mockito.verify(messageStorage).getMessage("someFollower");
}
Когда я использую forEach/лямбда таким образом:
IntStream.range(0, owner.size())
.forEach(i ->
owner.add(new Message(us.getName() + " - " + messageStorage.getMessage(us.getName()).get(i).getText(),
messageStorage.getMessage(us.getName()).get(i).getTime()))
);
listOfMessages.addAll(owner);
Тест не проходит с ответом:
Wanted but not invoked:
messageStorage.getMessage("someFollower");
-> at app.command.WallTest.onTheWallTest(WallTest.java:47)
Actually, there were zero interactions with this mock.
Спасибо, возможно, мне нужно добавить сообщение в тест, чтобы покрыть его.
Учитывая тот факт, что строка '.getUser(' может быть найдена только один раз в коде, а именно в насмешке, я полагаю, что раздел, который фактически запускает насмешку, отсутствует в предоставленных усилиях.
@AndreyLebedenko: тогда я могу заменить простой обычный цикл на Java 8/9 (лямбда) и работать в mockito?




Я исправил так:
messageStorage.getMessage(us.getName())
.stream()
.map(item -> owner.add(
new Message(us.getName() + " - " + item.getText(), item.getTime())
));
Вы разместили только частичные фрагменты кода, поэтому об этом трудно рассуждать. Но если владелец также инициализируется с помощью
List<Message> owner = new ArrayList<>();в вашем потоковом коде, тоIntStream.range(0, owner.size())— это пустой поток. Повторение пустого потока ничего не даст.