Я пытаюсь настроить единичные тесты для некоторых классов утилиты в проекте, над которым я работаю, и один из классов (содержит информацию о лицензировании) имеет метод, который выполняет определенное определение на основе текущего времени.
то есть. лицензия содержит дату истечения срока действия, а строка лицензии проверяет эту дату, но фактическая логика, чтобы узнать, истек ли срок действия лицензии, основана на текущем времени.
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 );
}
Итак, я не уверен, что делать, поскольку "новая функция Date()" не является статическим критерием.
- Должен ли я не пытаться проверить 'isValid' и просто проверить 'isLicenseStringValid()' и функцию getExpiryDate() отдельно?
- Я просто использую лицензионный ключ в тесте с сумасшедшим длительным сроком действия, чтобы у меня были переключения заданий к моменту истечения срока его действия?
- Я пытаюсь высмеять "новую дату()" для некоторого метода getCurrentTime(), чтобы я мог подделать, в какое время это сейчас?
Что обычно делают другие с тестами, которые являются условными по времени?