... не зная, правильное ли слово «mock».
В любом случае, у меня есть унаследованная кодовая база, которую я пытаюсь написать для нее несколько тестов, основанных на времени. Стараясь не быть слишком расплывчатым, код связан с просмотром истории предмета и определением того, имеет ли этот предмет сейчас порог времени.
В какой-то момент мне также нужно протестировать добавление чего-либо в эту историю и проверить, что порог теперь изменен (и, очевидно, корректен).
Проблема, с которой я сталкиваюсь, состоит в том, что часть кода, который я тестирую, использует вызовы time (), и поэтому мне очень трудно точно определить, каким должно быть пороговое время, исходя из того факта, что что я не совсем уверен, когда именно эта функция time () будет вызвана.
Таким образом, мой вопрос в основном таков: есть ли какой-то способ для меня «переопределить» вызов time () или каким-то образом «смоделировать» время, чтобы мои тесты работали в «известное время»?
Или я просто должен принять тот факт, что мне придется что-то делать в коде, который я тестирую, чтобы каким-то образом позволить мне заставить его использовать определенное время в случае необходимости?
В любом случае, есть ли «общие практики» для разработки чувствительной ко времени функциональности, удобной для тестирования?
Edit:
Частью моей проблемы также является тот факт, что время, которое происходило в истории, влияет на порог. Вот пример части моей проблемы ...
Представьте, что у вас есть банан, и вы пытаетесь решить, когда его нужно съесть. Предположим, что срок его действия истекает в течение 3 дней, если только он не был опрыскан каким-либо химическим веществом, и в этом случае мы добавляем к истечению 4 дня, с момента нанесения спрея . Затем мы можем добавить к нему еще 3 месяца, заморозив его, но если он был заморожен, у нас есть только 1 день, чтобы использовать его после оттаивания.
Все эти правила продиктованы историческими временами. Я согласен, что мог бы использовать предложение Доминика о тестировании в течение нескольких секунд, но что из моих исторических данных? Должен ли я просто «создать» это на лету?
Как вы можете или не можете сказать, я все еще пытаюсь овладеть всей этой концепцией "тестирования";)