Тест истечения промокода падает в последний день месяца
public bool IsExpired(PromoCode code) => DateTime.UtcNow > code.ValidUntil;
Тест создаёт промокод с ValidUntil = DateTime.UtcNow.AddDays(1).Date и проверяет, что он ещё действует. В некоторые часы тест падает. Сервис на .NET 8. Как сделать код тестируемым?
- Внедрять TimeProvider и в тестах подменять время
- Использовать DateTime.Now вместо UtcNow
- Не запускать тест в последние часы суток
- Добавить к ValidUntil запас в неделю
