Создание среды тестирования с помощью php cli - PullRequest
1 голос
/ 30 декабря 2008

Я хочу использовать php в режиме консоли и создать среду для тестирования своих функций.

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

Я хочу получить доступ к функции в консоли и затем вернуть результат.

Как мне это сделать?

Обновление:

Возможно, я плохо объяснил это. Я только хочу увидеть, какой результат возвращает функция.

Возможно, мне нужно научиться модульному тестированию, но на данный момент мне нужна только интерактивная консоль, которая позволяет мне тестировать все функции по одной.

В моем случае я должен загрузить функции WordPress (я знаю, как это сделать с помощью обычного .php файла, а затем браузер для анализа файла), но я не могу, если это возможно сделать с помощью php командная строка.

Ответы [ 4 ]

1 голос
/ 30 декабря 2008

Я использовал phpsh в прошлом и нашел его очень полезным. Как только вы запустите его, вам нужно будет chdir() указать, где находятся ваши файлы, а затем, очевидно, require() любые файлы, содержащие функции, которые необходимо протестировать. Затем вы можете просто проверить свои вызовы функций, введя их в оболочку, например, var_dump(some_function(1, 2));

1 голос
/ 30 декабря 2008

Я думаю, вы должны быть более конкретными, какие именно функции. Wordpress не предоставляет что-то подобное из коробки, большинство приложений PHP не будет.

Я также думаю, что вы вызываете проблемы, когда такие приложения не предназначены для таких сред.

Вот пример попытки вызова current_time () из functions.php и попытки, которые мне пришлось сделать, просто чтобы понять, что это не сработает так:


php -r 'require "functions.php"; var_dump(current_time("mysql"));'

дает


Fatal error: Call to undefined function apply_filters() in functions.php on line 346

Попытка


php -r 'require "functions.php"; require "plugin.php"; var_dump(current_time("mysql"));'

дает


Fatal error: Call to undefined function wp_cache_get() in functions.php on line 351

Попытка


php -r 'require "functions.php"; require "plugin.php"; require "cache.php"; var_dump(current_time("mysql"));'

дает


Fatal error: Call to a member function get() on a non-object in cache.php on line 93

Глядя на последнюю ошибку в источнике, я вижу


 function wp_cache_get($id, $flag = '') {
     global $wp_object_cache;

     return $wp_object_cache->get($id, $flag);
 }

Использование глобальных переменных делает тестирование в других средах PITA, если не невозможно.

Если это не то, что вы пытаетесь сделать, вам нужно быть более конкретным / подробным в своем вопросе.

0 голосов
/ 30 декабря 2008

Как насчет:

php -a

И если вы скомпилируете php с поддержкой readline, это будет более прилично.

0 голосов
/ 30 декабря 2008

Вы хотите ознакомиться с «Модульным тестированием» в общем смысле, а затем попытаться применить их к PHP.

Используемая вами среда (если есть), стиль кода и тесты, которые вы хотите выполнить, определят точные методы, которые вам нужно использовать. Только сначала поняв концепцию модульных тестов и внедрив их в свои лучшие практики кодирования, вы сможете добиться прогресса в этом отношении.

...