Проверка как работает сайт в будущем

Возможно ли перевести дату чисто для php и mysql? Не меняя системного времени.

Например, на проекте идут ежемесячные платежи 1ого числа каждого месяца. Чтобы проверить что биллинг пройдёт нормально и оценить что произойдёт — мы можем только локально системное время переводить вперёд и смотреть что же будет.

Но тестировщикам как-то нужно проверять на своём сервере — там такое не проканает. И вообще какое-никакое автоматизированное тестирование сделать для подобных задач.

Есть ли решение этой проблемы?
  • Вопрос задан
  • 4334 просмотра
Решения вопроса 1
hell0w0rd
@hell0w0rd
Просто разработчик
чем более «там все это сложно» — тем сложнее вам прийдется поддерживать в будущем. Можно воспользоваться php.net/manual/ru/book.runkit.php, так можно подменить нативные функции php, и выдавать дату на месяц позже например. Хотя раз такая надобность — лучше бы вы сделали обертку на DateTime, которую можно мокать в тестах и делать с ней все что нужно
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Murloc
Как вариант можно в начале запроса менять время в системе на нужное, а в конце запроса ставить назад. Если же хотите в php, то для функции date(format,mktime) указать свой mktime, если используете класс DateTime уставить дату с помощью DateTime::setDate. Но лучше конечно менять время в системе если у вас что-то сложное и неподдающиеся изменению. Или же адаптировать ваш скрипт/программу для тестов.
Ответ написан
Комментировать
deMone
@deMone
Техдиректор — tech-director.ru
Зависит от того, каким образом вы запускаете каждого первого числа просчёт биллинга.

Скажем, если у вас просто в cron-е поставлен на выполнение какой-нибудь скрипт, его можно запустить вручную раньше назначенного времени. Проблем, впрочем, может оказаться очень много, ведь неизвестно, как именно написан ваш скрипт, и что случится если его запустить не вовремя.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы