I have recently configured VS code to debug PHP with xdebug. It works reliably with my application code but when I am running unit tests with PHPunit, my breakpoints are ignored.
My server is run inside a vagrant box.
My php.ini file contains the following lines:
[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
I use the PHP Debug VS Code extension.
This is my launch.json config:
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"pathMappings": {
"/var/www/mysite.local/": "${workspaceFolder}"
},
"port": 9000,
"log": true
}
My unit tests run fine, for example, from within /var/www/mysite.local, I can run:
phpunit --filter myTestMethod path/to/my/test/file/myTest.php
but while the test will run, a breakpoint I have within the test itself is consistently ignored and I cannot figure out why.
Has anybody had a similar issue? Is there a difference between how debugging works in the context of a normal application request and a unit test?
Your problem is happening because of pathMappings settings when you run a unit test with an absolute path, my suggestion is to replace the
"pathMappings": {
"/var/www/mysite.local/": "${workspaceFolder}"
},
with
"pathMappings": {
"/var/www/mysite.local/": "${workspaceFolder}",
"${workspaceFolder}": "${workspaceFolder}"
},
or disabled it when you run unit test
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With