Тест срока промокода был зелёным в день написания и упал на следующий
class PromoValidator {
fun isActive(promo: Promo): Boolean =
LocalDate.now() <= promo.validUntil
}
@Test
fun promoValidToday() {
val promo = Promo(validUntil = LocalDate.of(2026, 9, 16))
assertTrue(PromoValidator().isActive(promo))
}
Тест написали и влили 16 сентября — он был зелёным. 17 сентября он упал у всей команды и на CI, хотя код никто не трогал. Как сделать логику тестируемой?
- Передавать в валидатор Clock и фиксировать его в тесте
- Вычислять дату в тесте тоже через LocalDate.now()
- Выставить на CI часовой пояс Москвы
- Пометить тест @Ignore как нестабильный
