Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Debugging PHPUnit tests in VS Code?

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?

like image 542
loxyboi Avatar asked Mar 01 '26 12:03

loxyboi


1 Answers

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

like image 142
mfort Avatar answered Mar 03 '26 04:03

mfort