PHP System Test - 1600 строк процедурного скрипта - PullRequest
2 голосов
/ 08 апреля 2011

Мне было поручено системное тестирование PHP-скрипта длиной около 1600 строк, который каждую минуту запускается через cron. Сценарий на 100% процедурный и начинается с 30+ вызовов require_once (), которые вводят всю кодовую базу. Вот как система была разработана с самого начала.

Мне сказали, что рефакторинг не вариант, так как в настоящее время нет тестовых случаев.

Вопрос:
Я наткнулся на «новый» конструктор класса в середине скрипта. Этот конструктор класса создает фабрику в другом классе. Меня не волнует конструктор класса или фабрика. Есть ли способ обойти эту функциональность без насмешек, заглушек и т. Д.?

Проблемы:
- Требование () в начале скрипта не позволяет мне создать заглушку, так как у меня не может быть двух функций с одинаковым именем. (реальная функция и функция-заглушка)
«Новое» находится в середине скрипта, поэтому я не могу добавить макет к созданному объекту.

1 Ответ

0 голосов
/ 08 апреля 2011

Не совсем понимаю всю вашу проблему, но, прочитав последнюю часть вашего вопроса, о функциях-заглушках и similair, возможно, вам стоит узнать больше о , как может динамический php.

Например:

http://php.net/manual/en/function.rename-function.php

Таким образом, вы можете переименовать функцию, которую хотите заглушить, и создать новую с тем же именем, и, если хотите, вызвать старую функцию по ее новому имени из новой функции.

Существует множество таких вещей для манипулирования классами, функциями и т. Д., Некоторые из них в форме расширений и действительно довольно хакерские (особенно это целое расширение http://www.php.net/manual/en/book.runkit.php),, но для целей тестирования, почему нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...