Yii Framework модульное тестирование. Как смоделировать time () и другие стандартные функции? - PullRequest
1 голос
/ 18 августа 2011

Я пишу юнит-тест для своих моделей. Большинство из них используют много стандартных функций, таких как time (), date () и так далее. Каков наилучший подход для макетирования этих функций в стиле тестирования Yii?

Я нашел расширение PHPUnit Mockfunction , но я думаю, что в Yii есть более элегантный способ макетировать функции.

Помогите пожалуйста. Некоторые примеры будут очень приятными.

1 Ответ

0 голосов
/ 10 апреля 2013

Я знаю, что этот вопрос старый, но, тем не менее, он интересен.

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

...