26

我用 Codeception 的 ApiGuy 编写了一些 API 测试。现在我想在我的 PhpStorm 7 中设置断点以进行测试调试,但不知道如何在$ vendor/bin/codecept run. 我知道--debug选项,但这并不是我想要的。

你有什么主意吗?提前致谢!

4

6 回答 6

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> Edit Configurations...

编辑配置...

现在Add New Configuration (Alt + Insert)> PHP Script。然后命名运行配置并选择您在上面创建的文件。记得添加run参数:

在此处输入图像描述

就是这样。现在,您可以在 IDE 中运行测试并将它们作为普通脚本进行调试。

于 2013-12-22T13:10:57.907 回答
21

我使用 codecept.phar 文件,我发现这个文件确实有效。只需在控制台中键入此命令,然后运行代码接收测试:

export XDEBUG_CONFIG="idekey=session_name remote_host=localhost profiler_enable=1"
于 2014-03-07T06:02:44.653 回答
6

我建议使用

php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=YOUR_KEY -dxdebug.remote_host=YOUR_IP ../vendor/bin/codecept run
于 2017-01-31T11:31:13.930 回答
2

可以使用别名

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

然后我们可以xon在控制台中使用来开始调试并xoff完成。

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

于 2016-04-22T11:30:10.277 回答
1

另一种方法是配置 PhpStorm,如上所述,但将File设置为bin/ceptArguments 并将项目的根目录设置为Custom Working Directoryrun

于 2016-02-19T08:04:37.577 回答
0

我认为您至少在 PHPStorm 中实际上不需要额外的脚本来调试 Codeception。我认为您也不会在其他 IDE 中使用。您可以在 Maciej Sz 的答案中显示的配置中将 codecept.phar 设置为“文件”,并像运行 PHPStorm、Eclipse 等中的任何其他命令行脚本一样运行它。

在 PHPStorm 中,您创建一个新的 PHP 脚本调试配置,指向 codecept.phar 作为“文件”。将参数设置为基本运行配置(例如运行接受 --group mygroup --env myenv),但每次要调试时都告诉它“显示此页面”。然后,您可以更改每次运行的测试/组/环境以使用断点运行测试。

当您从弹出窗口中单击调试按钮时,验收测试将在调试器控制台中启动。

遇到断点的初始运行将处于验证阶段,Codeception 尝试确保代码在运行之前运行。第二次运行将在测试实际使用 Selenium 或您配置的任何内容时进行。这将允许您查看内存中的内容,以受控方式跨过事物等。

于 2015-09-30T18:56:12.520 回答