Подтвердить что ты не робот

Отладка тестов с помощью Xdebug

Я написал несколько тестов API с Codeception ApiGuy. Теперь я хочу установить точки останова в моем PhpStorm 7 для тестирования отладки тестов, но не знаю, как начать сеанс отладки после $ vendor/bin/codecept run. Я знаю о опции --debug, но это не совсем то, что я хочу.

Есть ли у вас идеи? Спасибо заранее!

4b9b3361

Ответ 1

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

На самом деле все, что вам нужно сделать в Linux, - удалить shebang из инструмента codeception, чтобы запустить его как PHP скрипт. Но поскольку команды, отличные от codeception run, гораздо менее подвержены отладке, я подготовил отдельный PHP скрипт. Он содержит только параметр run:

<?php
/**
 * Codeception PHP скрипт runner
 */

require_once dirname(__FILE__).'/../vendor/codeception/codeception/autoload.php';

use Symfony\Component\Console\Application;

$app = new Application('Codeception', Codeception\Codecept::VERSION);
$app->add(new Codeception\Command\Run('run'));

$app->run();

После этого вы можете настроить свою отладку script, как и любой другой в PHPStorm. Итак, перейдите к Select Run/Debug Configuration > Edit Configurations...:

Edit Configurations...

Теперь Add New Configuration (Alt + Inssert) > PHP скрипт. Затем назовите конфигурацию прогона и выберите файл, который вы создали выше. Не забудьте добавить аргумент run:

enter image description here

И что это. Теперь вы можете запускать свои тесты из IDE и отлаживать их как обычные скрипты.

Ответ 2

Я использую файл codecept.phar, и я считаю, что он работает. просто введите эту команду в консоли, а затем запустите тесты кода:

export XDEBUG_CONFIG="idekey=session_name remote_host=localhost profiler_enable=1"

Ответ 3

Я бы предложил использовать

php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=YOUR_KEY -dxdebug.remote_host=YOUR_IP ../vendor/bin/codecept run

Ответ 4

Можно использовать псевдоним

alias xon="export XDEBUG_CONFIG=\"profiler_enable=1\""
alias xoff="export XDEBUG_CONFIG=\"profiler_enable=0\""

И тогда мы могли бы использовать xon в консоли для запуска debug и xoff для завершения.

http://theaveragedev.com/debug-cli-scripts-with-phpstorm

Ответ 5

Я не думаю, что вам действительно нужен дополнительный script для отладки кода, по крайней мере, в PHPStorm. Я не думаю, что вы тоже в других IDE. Вы можете установить codecept.phar как "Файл" в вашей конфигурации, показанный в Maciej Sz, и запустить его, как и любую другую командную строку script из PHPStorm, Eclipse и т.д.

В PHPStorm вы создаете новую конфигурацию отладки PHP script, указывающую на codecept.phar как "файл". Задайте аргументы как базовую конфигурацию прогона (например, запустите accept -group mygroup --env myenv), но сообщайте "Показывать эту страницу" каждый раз, когда вы хотите отлаживать. Затем вы можете изменить, какой тест/группа/среда вы выполняете каждый раз, чтобы запустить тест с точками останова.

Когда вы нажимаете кнопку отладки во всплывающем окне, приемочный тест начинается в консоли отладчика.

Первоначальный прогон, который попадает в точку останова, будет находиться в фазе проверки, где Codeception пытается обеспечить выполнение кода перед его запуском. Второй прогон будет, когда тест на самом деле использует Selenium или все, что вы настроили. Это позволит вам увидеть, что находится в памяти, контролировать ситуацию контролируемым образом и т.д.

Ответ 6

Другой способ - настроить PhpStorm, как указано выше, но установить bin/cept для Файл, run для Аргументов, а корень вашего проекта - Пользовательский рабочий каталог.