Как протестировать Optional.orElseThrow()

117
20 ноября 2021, 15:30

У меня есть метод, использующий репозиторий использующий Optional.orElseThrow внутри сервиса.

Как правильно реализовать конструкцию when(restLogRepository.findById(anyLong()).thenReturn(log); ? Мой способ, очевидно, неправильный

Сервис

public RestLogDto readById(Long id) {
    return DtoConverter.convert(
        restLogRepository.findById(id).orElseThrow(() -> new NoSuchElementException("Element not found")),
        modelMapper);
    }

Тестовый метод (неправильный)

@Test
public void readById() {
    RestLog log = new RestLog();
    log.setLogId(LOG_ID);
    when(restLogRepository.findById(anyLong()).orElseThrow(any(Supplier.class))).thenReturn(log);
    RestLogDto result = DtoConverter.convert(log, mapper);
    assertEquals(result, logReader.readById(LOG_ID));
}
Answer 1
DtoConverter entity = spy(new DtoConverter());
entity.setId(5);
doReturn(Optional.of(entity)).when(restLogRepository).findById(any());
assertEquals(5, logReader.readById(5));
READ ALSO
Как вынести org.quartz.jobStore.isClustered из quartz.properties в настройки сервера?

Как вынести org.quartz.jobStore.isClustered из quartz.properties в настройки сервера?

Использовал spring-quartz для выполнения задач по расписанию Все настроил и протестировался на кластере с двумя нодами

152
Просьба помочь, не могу разобраться

Просьба помочь, не могу разобраться

Допишите конструктор в класс Time, который принимает время в секундах

153
Распарсить и распечать период в формате ISO8601

Распарсить и распечать период в формате ISO8601

Я хочу такую строку распарсить P3Y6M4DT12H30M17S(ОДин из форматов) и распечатать 3 года 6 месяцев 4 суток 12 часов 30 минут и 17 секунды

189
Не работает проверка символов в cmd

Не работает проверка символов в cmd

Когда я сравниваю символ введённый с клавиатуры в eclipse то он проверяет нормально, а вот в cmd уже не работает, только русские символы

119