我最近配置了VS代码来用xdebug调试PHP。它可以可靠地运行我的应用程序代码,但是当我用PHPunit运行单元测试时,我的断点被忽略了。
我的服务器是在一个流浪汉的盒子里运行的。
我的php.ini
文件包含以下行:
[xdebug]
zend_extension="/usr/lib/xdebug/xdebug-2.2.7/modules/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_connect_back=1
xdebug.remote_autostart=1
我使用PHP Debug VS Code扩展。
这是我的launch.json
配置:
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"pathMappings": {
"/var/www/mysite.local/": "${workspaceFolder}"
},
"port": 9000,
"log": true
}
我的单元测试运行良好,例如,从/var/www/mysite.local
中,我可以运行:
phpunit --filter myTestMethod path/to/my/test/file/myTest.php
但是当测试运行时,我在测试本身中的一个断点总是被忽略,我不知道为什么。
有没有人遇到过类似的问题?在正常的应用程序请求和单元测试的上下文中,调试的工作方式有什么不同吗?
3条答案
按热度按时间qacovj5a1#
当您运行带有绝对路径的单元测试时,您的问题是由于
pathMappings
设置而发生的,我的建议是将与
或在运行单元测试时禁用它
thtygnil2#
在我的例子中,phpunit调用了php cli,而后者没有使用我的测试服务器使用的php.ini conf文件,该服务器激活了xdebug。
确保使用了正确的php.ini文件。您可以在使用
-c
参数调用php时指定它。您可以通过编辑phpunit的启动脚本将此参数传递给php,该脚本可以在vendor/bin/phpunit.bat(对于Windows)中找到。
文件如下所示:
只需在php后面添加
-c
,并将路径添加到php.ini目录:5vf7fwbs3#
我必须在运行phpunit的终端会话中指定
idekey
看起来像vscode检查任何设置的
idekey
值;在我的浏览器中,我的Xdebug助手扩展已经将idekey
设置为PHPSTORM
,从那里进行调试一直工作得很好