Тест истечения подписки проходит днём и падает в ночь на первое число
public boolean isExpired(Subscription s) {
return LocalDate.now().isAfter(s.getPaidUntil());
}
Тест создаёт подписку с paidUntil = LocalDate.now() и проверяет, что она ещё не истекла. Иногда он падает — прогон начался в 23:59:59, а проверка выполнилась уже в следующие сутки. Как сделать код тестируемым?
- Внедрять java.time.Clock и в тестах передавать Clock.fixed
- Запретить запуск тестов с 23:50 до 00:10
- Заменить LocalDate.now() на System.currentTimeMillis()
- Добавить в тест повтор при падении
