提问人:dotNET 提问时间:10/24/2023 更新时间:10/24/2023 访问量:38
测试未命中 Docker + XDebug + VSCode 设置中的断点
Tests not hitting breakpoints in Docker + XDebug + VSCode setup
问:
今天已经花了大半夜和几个小时,浏览了几十篇文章、视频等等,我都无法让它发挥作用。
这是一个 Laravel 10 应用程序,我正在尝试调试一些测试。应用程序在 Docker 容器内运行。以下是我所取得的成就:
以下行也来自:
phpinfo()
IDE Key: VSCODE xdebug.client_host: host.docker.internal xdebug.client_port: 9015 xdebug.discover_client_host: On xdebug.idekey: VSCODE xdebug.start_with_request yes
launch.json
XDEBUG 的配置如下所示:{ "name": "Listen for Xdebug", "type": "php", "request": "launch", "port": 9015, "log": true, "hostname": "0.0.0.0", "externalConsole": false, "pathMappings": { "/var/www/html": "${workspaceRoot}/backend", }, "ignore": [ "**/vendor/**/*.php" ], "maxConnections": 100, "xdebugSettings": { "max_children": 99, "max_depth": 3, },
},
docker 服务配置如下所示:
apache-php-8.2: build: context: ./ dockerfile: /Dockerfile args: xdebug_port: 9015 image: apache environment: - "APACHE_LOG_DIR:/app" - XDEBUG_MODE=develop,debug - XDEBUG_CONFIG="idekey=VSCODE" ports: - "8443:443" - "8080:80" volumes: - ../back:/var/www/html extra_hosts: - "host.docker.internal:host-gateway"
最后,如果有什么要做的,这里是它的样子:
phpunit.xml
<?xml version="1.0" encoding="UTF-8"?> <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd" bootstrap="vendor/autoload.php" colors="true"> <testsuites> <testsuite name="Unit"> <directory>tests/Unit</directory> </testsuite> <testsuite name="Feature"> <directory>tests/Feature</directory> </testsuite> </testsuites> <source> <include> <directory>app</directory> <directory>tests</directory> </include> </source> <php> <ini name="xdebug.remote_enable" value="1"/> <ini name="xdebug.remote_autostart" value="1"/> <ini name="xdebug.mode" value="debug"/> <ini name="xdebug.start_with_request" value="yes"/> <ini name="xdebug.client_port" value="9015"/> <ini name="xdebug.client_host" value="host.docker.internal"/> <env name="APP_ENV" value="testing"/> <env name="BCRYPT_ROUNDS" value="4"/> <env name="CACHE_DRIVER" value="array"/> <env name="MAIL_MAILER" value="array"/> <env name="QUEUE_CONNECTION" value="sync"/> <env name="SESSION_DRIVER" value="array"/> <env name="TELESCOPE_ENABLED" value="false"/> <env name="XDEBUG_CONFIG" value="idekey=VSCODE"/> </php> </phpunit>
其中许多设置都是我在研究过程中积累的,因此可能存在一些冗余或重叠。
有趣的是,当我在浏览器中浏览应用程序时,我的断点被正确命中。似乎只有 PHPUnit 没有停止。测试本身运行正常,我确实看到消息,而不会停止我在这些测试中设置的任何断点。OK(1 test, 1 assertion)
有人可以帮助和指导我在这里做错了什么吗?
答: 暂无答案
评论
phpinfo()
"hostname": "0.0.0.0",
xdebug.remote_enable
xdebug.remote_autostart
hostname
php -i
setBreakPoint
"ignore":