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