为了账号安全,请及时绑定邮箱和手机立即绑定

在 VS Code 中调试 PHPUnit 测试?

在 VS Code 中调试 PHPUnit 测试?

PHP
胡说叔叔 2021-12-03 19:00:44
我最近配置了 VS 代码来使用 xdebug 调试 PHP。它与我的应用程序代码一起可靠地工作,但是当我使用 PHPunit 运行单元测试时,我的断点被忽略。我的服务器在一个流浪箱内运行。我的php.ini文件包含以下几行:[xdebug]zend_extension="/usr/lib/xdebug/xdebug-2.2.7/modules/xdebug.so" xdebug.remote_enable=1xdebug.remote_port=9000xdebug.remote_connect_back=1xdebug.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但是当测试将运行时,我在测试本身中的断点始终被忽略,我无法弄清楚原因。有没有人有类似的问题?在正常应用程序请求和单元测试的上下文中调试的工作方式有区别吗?
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

就我而言,phpunit 正在调用 php cli,后者没有使用我的测试服务器使用的 php.ini conf 文件,该文件已激活 xdebug。


确保使用正确的 php.ini 文件。您可以在使用-c参数调用 php 时指定它。


您可以通过编辑 phpunit 的启动脚本将此参数传递给 php,该脚本可以在 vendor/bin/phpunit.bat(适用于 Windows)中找到。


该文件如下所示:


@ECHO OFF

setlocal DISABLEDELAYEDEXPANSION

SET BIN_TARGET=%~dp0/../phpunit/phpunit/phpunit

php "%BIN_TARGET%" %*

只需添加-c后面的 php 和 php.ini 目录的路径:


php -c PATH_TO_PHP.INI_DIRECTORY "%BIN_TARGET%" %*


查看完整回答
反对 回复 2021-12-03
?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

pathMappings当您使用绝对路径运行单元测试时,您的问题是由于设置而发生的,我的建议是替换


   "pathMappings": {

        "/var/www/mysite.local/": "${workspaceFolder}"

    },


   "pathMappings": {

        "/var/www/mysite.local/": "${workspaceFolder}",

        "${workspaceFolder}": "${workspaceFolder}"

    },

或在运行单元测试时禁用它


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 292 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号