我用Codeception的ApiGuy写了一些API测试。现在我想在我的PhpStorm 7中设置断点以进行测试调试,但是不知道如何在$ vendor/bin/codecept run
之后启动调试会话。我知道--debug
选项,但这不是我想要的。
答案 0 :(得分:28)
我遇到了同样的问题。似乎 Codeception 仅带有命令工具,无法调试。我最终编写了自己的PHP运行器,它基本上是codeception
命令可执行文件的精简副本。
实际上你在Linux中所要做的就是从codeception
工具中删除shebang以将其作为PHP脚本运行。但是由于codeception run
以外的命令不太可能成为调试的主题,所以我准备了单独的PHP脚本。它仅包含run
选项:
<?php
/**
* Codeception PHP script 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();
完成此操作后,您可以像设置 PHPStorm 中的任何其他设置一样设置调试脚本。所以转到Select Run/Debug Configuration
&gt; Edit Configurations...
:
现在Add New Configuration (Alt + Inssert)
&gt; PHP Script
。然后命名运行配置并选择上面创建的文件。请记住添加run
参数:
就是这样。现在,您可以在IDE中运行测试并将其作为普通脚本进行调试。
答案 1 :(得分:19)
我使用codecept.phar文件,我发现这个确实有效。 只需在控制台中输入此命令,然后运行代码测试:
export XDEBUG_CONFIG="idekey=session_name remote_host=localhost profiler_enable=1"
答案 2 :(得分:5)
我建议使用
php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=YOUR_KEY -dxdebug.remote_host=YOUR_IP ../vendor/bin/codecept run
答案 3 :(得分:2)
可以使用别名
alias xon="export XDEBUG_CONFIG=\"profiler_enable=1\""
alias xoff="export XDEBUG_CONFIG=\"profiler_enable=0\""
然后我们可以在控制台中使用xon
来启动调试并使用xoff
来完成。
答案 4 :(得分:1)
另一种方法是配置PhpStorm,如上所述,但为文件设置bin/cept
,为参数设置run
,并为您设置
答案 5 :(得分:0)
我认为你至少在PHPStorm中不需要额外的脚本来调试Codeception。我不认为你会在其他IDE中。您可以将codecept.phar设置为Maciej Sz的答案中显示的配置中的“File”,并像运行PHPStorm,Eclipse等的任何其他命令行脚本一样运行它。
在PHPStorm中,您创建一个新的PHP脚本调试配置,指向codecept.phar作为“文件”。将参数设置为基本运行配置(例如,运行验收--group mygroup --env myenv),但每次要调试时都要将其显示为“显示此页面”。然后,您可以更改每次运行的测试/组/环境以使用断点运行测试。
当您从弹出窗口中单击调试按钮时,验证测试将在调试器控制台中启动。
命中断点的初始运行将处于验证阶段,Codeception尝试确保代码在运行之前运行。第二次运行将是测试实际使用Selenium或您配置的任何内容。这将允许您查看内存中的内容,以受控方式跨越事物等等。