猿问

在 VS Code 中调试 PHPUnit 测试?

我最近配置了 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

但是当测试将运行时,我在测试本身中的断点始终被忽略,我无法弄清楚原因。


有没有人有类似的问题?在正常应用程序请求和单元测试的上下文中调试的工作方式有区别吗?


胡说叔叔
浏览 293回答 2
2回答

青春有我

就我而言,phpunit 正在调用 php cli,后者没有使用我的测试服务器使用的 php.ini conf 文件,该文件已激活 xdebug。确保使用正确的 php.ini 文件。您可以在使用-c参数调用 php 时指定它。您可以通过编辑 phpunit 的启动脚本将此参数传递给 php,该脚本可以在 vendor/bin/phpunit.bat(适用于 Windows)中找到。该文件如下所示:@ECHO OFFsetlocal DISABLEDELAYEDEXPANSIONSET BIN_TARGET=%~dp0/../phpunit/phpunit/phpunitphp "%BIN_TARGET%" %*只需添加-c后面的 php 和 php.ini 目录的路径:php -c PATH_TO_PHP.INI_DIRECTORY "%BIN_TARGET%" %*

蝴蝶刀刀

pathMappings当您使用绝对路径运行单元测试时,您的问题是由于设置而发生的,我的建议是替换   "pathMappings": {        "/var/www/mysite.local/": "${workspaceFolder}"    },和   "pathMappings": {        "/var/www/mysite.local/": "${workspaceFolder}",        "${workspaceFolder}": "${workspaceFolder}"    },或在运行单元测试时禁用它
随时随地看视频慕课网APP
我要回答