У меня есть процедура, которая делает следующее:
public void onEvent(List<Dto> pendingData)
{
eventDao.saveBatch(pendingData);
pendingData.clear();
}
В своем тесте рутины я использую @Mock для eventDao:
@Mock
private EventDAO eventDao;
@Test
public void onEvent() {
// some preparations
handler.onEvent(testEvents);
// eventsExpectedToBePassed is the same as testEvents but it is an
// independent object populated separately
verify(eventDao, times(1)).saveBatch(eventsExpectedToBePassed);
}
Ошибка проверки с информацией о том, что процедура была вызвана с пустым массивом Вероятно, это происходит потому, что Mockito просто хранит ссылку на массив, переданный макету, и, как вы можете видеть из кода onEvent, этот массив очищается в ходе последующего выполнения. Если я получу копию, позвонив вместо этого
eventDao.saveBatch(new ArrayList(pendingData));
тогда тест проходит нормально. Однако мне нравится избегать этого, поскольку это дополнительная операция, которая мне не нужна.
Как я могу сказать Mockito сохранить копию переданного массива, а не сам массив, поэтому, когда массив очищен, в тестовом коде У меня есть это для подтверждения?