Я знаю, что этот вопрос старый, но, тем не менее, он интересен.
Короче говоря, если в вашем коде есть библиотечная функция, подобная time()
, то, очевидно, вы не можете ее смоделировать как есть. У вас должна быть какая-то совершенно тупая абстракция вокруг этого вызова, например TimeSource->now()
, и ваша SUT должна использовать эту абстракцию вместо прямого вызова библиотечной функции. Таким образом, в ваших модульных тестах вы можете заменить реальный TimeSource
на подделку, созданную любым способом, который вы найдете подходящим, через Mockery, через mock PHPUnit, написав поддельный класс вручную, назовите его. Конечно, эта подделка должна возвращать контролируемые результаты для рассматриваемой функции.