在Behat中启用XDebug

7

我正在使用behat+mink。我编写了一些功能,现在正在运行测试。

当运行behat测试时,如何启用xdebug以便在phpstorm上通过断点停止?


你尝试过点击“调试”按钮而不是“运行”吗?至于 xdebug 配置,与“普通”的 PHP 代码一样。 - LazyOne
2
是的,我已经配置了phpstorm中的behat,并在我的bash_profile中添加了export XDEBUG_CONFIG="idekey=PHPSTORM",看起来它可以工作了。 - Nealv
我只是试图做完全相同的事情,但无法使其工作。您能否进一步解释一下“将export XDEBUG_CONFIG =” idekey = PHPSTORM“添加到我的bash_profile”?哪个bash配置文件以及放在哪里?谢谢。 - Chris
你使用的是Mac吗?对我来说,我的bash配置文件在:/Users/myUserName/.bash_profile 我只需添加一行: export XDEBUG_CONFIG="idekey=PHPSTORM" - Nealv
谢谢Nealv,我认为我有一个不同的配置问题。一定与我的项目设置有关(本地文件,部署到挂载服务器)。 - Chris
这个问题需要澄清:你只是想调试步骤,还是也想调试测试系统?也就是说,如果Mink CURL访问你的网站,你是否也想逐步执行网站的脚本(SUT)? - Alex Skrypnyk
1个回答

5
我还没有尝试过使用Mink,但是以下配置允许我通过调试behat(behat在远程服务器上运行)来逐步进行:

配置具有x-debug的服务器

xdebug config

值得注意的是,由于这是命令行,您需要编辑/etc/php5/cli/conf.d/20-xdebug.ini下的cli配置。

  • 将remote_host设置为您从PHPSTORM使用的计算机的IP
  • 将autostart设置为1
  • 禁用connect_back,您将从服务器启动调试,因此无需连接回去

您也可以通过导出变量作为环境变量来完成此操作,只需记住每次启动新的shell时执行此操作(或将其添加到您的.bash_profile文件中):

export XDEBUG_CONFIG="remote_host=<YOUR IP>"

配置PHPStorm的调试器

默认情况下,PHPStorm似乎无法理解远程CLI脚本,因此我们需要添加一个配置,告诉它期望CLI脚本触发xdebug。

  1. 打开运行菜单并选择“编辑配置”
  2. 点击绿色“+”添加新配置,选择“PHP远程调试”
  3. 命名配置(例如MyServer-Behat) Create new Debug Configuration
  4. 在Servers:菜单下,选择您的远程服务器。
    1. 如果您尚未配置远程服务器,请通过单击右侧的“...”按钮进行此操作
    2. 单击绿色“+”添加服务器配置。给它一个名称(例如MyServer),并在Host下填写其地址
    3. 配置其路径映射。如果您在PHPStorm计算机上的源文件路径与服务器上的路径不同,则这很重要。您可以在我的示例中看到,我将我的本地检查(〜/ Work / Symfony /)与我的服务器安装(/ var / www /)相关联。我特别添加了src、bin、web、app和vendor的映射,方法是在“服务器上的绝对路径”下的空间中单击右侧,并键入路径。我遇到了问题,只映射根目录,所以我不得不添加这些路径才能使调试器正常工作。 enter image description here

开始调试!

设置完成后,从调试工具栏中选择您的配置,并单击bug图标(也可以使用运行菜单)开始调试器侦听。这类似于默认的电话按钮(用黄色圈出),但它告诉PHPStorm使用您的新配置。 enter image description here

现在,只需像通常从服务器上运行behat一样运行,您的调试器应该连接并停止在您放置的任何断点上。

如果您对其是否有效有疑虑,请尝试在运行菜单中切换“在第一行中断”,因为这应该使调试器在运行behat时立即中断(在bin / behat文件中)


我再次强调,设置xdebug.remote_connect_back=0非常重要,以确保xdebug.remote_hostxdebug.remote_port的值被尊重。如果不将其设置为0,则只能调试behat步骤,而无法对测试系统进行调试。 - Alex Skrypnyk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接