Предположительно, я участвую в интеграционных тестах библиотеки, основанной на specs
, с базовой реализацией, написанной на Scala
. Тестирование больше привязано к потоку событий, протекающему с некоторым атрибутом timestamp
.
Следующая заглушка является частью фактической реализации
private def eligibleForRecentPost(optionalPost: Option[SearchEntity]): Boolean = {
optionalSearch.map(search => search.timestamp)
.exists(searchTime => searchTime >= LocalDateTime.now()
.minusDays(recencyDurationInDays).atZone(ZoneId.systemDefault).toInstant.toEpochMilli)
}
Теперь код, который я бы искал, может быть чем-то вроде
// just a mock
when(LocalDateTime.now().minusDays(any)
.atZone(ZoneId.systemDefault).toInstant.toEpochMilli)
.thenReturn(1579625874972)
Обратите внимание, я знаю, что search.timestamp в тесте может быть обновлен, но это потребует обновления событий после каждого recencyDurationInDays
!!
Но есть ли лучший и надежный способ сделать это в specs2 и/или scala?
Правка. Должен отметить, что я не собираюсь менять реализацию таким образом, чтобы LocalDateTime
был переопределен/обернут другим классом.