Я пытаюсь настроить модульные тесты для некоторых служебных классов в проекте, над которым я работаю, и один из классов (содержит информацию о лицензировании) имеет метод, который выполняет определенное определение на основе текущего времени.
т.е. лицензия содержит дату истечения срока действия, а строка лицензии проверяет эту дату, но фактическая логика для определения истечения срока действия лицензии основана на текущем времени.
public boolean isValid()
{
return isLicenseStringValid() && !isExpired();
}
public boolean isExpired()
{
Date expiry = getExpiryDate();
if( expiry == null ) {
return false;
}
Date now = new Date();
return now.after( expiry );
}
Итак, я не уверен, что делать, поскольку функция 'new Date ()' не является статическим критерием.
- Стоит ли мне не проверять isValid, а просто отдельно проверять isLicenseStringValid () и функцию getExpiryDate ()?
- Я просто использую лицензионный ключ в тесте с сумасшедшим длинным сроком действия, чтобы я сменил работу к тому времени, когда он истечет?
- Пытаюсь ли я смоделировать метод 'new Date ()' некоторым методом 'getCurrentTime ()', чтобы я мог фальсифицировать, который сейчас час?
Что другие обычно делают с тестами, зависящими от времени?