Laravel Dusk的Xdebug在Homestead上的Netbeans中

时间:2019-02-15 14:50:17

标签: laravel xdebug homestead laravel-dusk

在Laravel Homestead中,我已经能够使用Xdebug进行单元测试,功能测试,在浏览器中浏览等等。

但是当我尝试将Xdebug用于Dusk(在tests / Browser文件夹中的测试)时,它挂起。

我认为这些问题可能会有所帮助,但我仍然没有使它起作用:

我尝试了各种方法,包括:

export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_connect_back=0 remote_host=10.0.2.2"
php artisan dusk

export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_host=10.0.2.2"
php -dxdebug.remote_autostart=on -dxdebug.remote_connect_back=off -dxdebug.remote_host=10.0.2.2 artisan dusk

更多

我已在Netbeans中启用了“在第一行停止”调试选项,并且Netbeans确实在artisan文件中的第一个可执行PHP行处成功停止了。

因此,我认为export XDEBUG_CONFIG="idekey=netbeans-xdebug remote_connect_back=0 remote_host=10.0.2.2"的设置正确。

但是,在我单击“播放”按钮以允许代码继续运行之后,Netbeans只是在右下角说“ netbeans-xdebug running”,而控制台只是挂起,并且光标在此行下闪烁:php artisan dusk tests/Browser/ExampleTest.php

我如何更改Xdebug的用法以使其也能在Dusk中工作?

2 个答案:

答案 0 :(得分:2)

这是行不通的,因为Dusk在单独的进程中执行了实际的PHPUnit测试,因此它对XDEBUG_CONFIG一无所知。

原则上,直接执行(phpunit tests/Browser/ExampleTest.php)时,Dusk测试仍然有效。 php artisan dusk的主要功能是自定义.env.dusk[.local]文件。

如果不需要,您可以尝试直接致电给他们。然后Xdebug的行为应与所有其他PHPUnit测试相同。

答案 1 :(得分:0)

正如我的回答here一样,可以选择运行php -dxdebug.remote_enable=1 -dxdebug.remote_host=10.0.2.2 -dxdebug.remote_port=9000 -dxdebug.remote_handler=dbgp artisan my:command

您还可以像这样将这些参数添加到xdebug.ini中:

zend_extension_ts = "./php/ext/php_xdebug<-version-number>.dll"
xdebug.remote_enable=1
xdebug.remote_host=10.0.2.2
; Port number must match debugger port number in NetBeans IDE Tools > Options > PHP
xdebug.remote_port=9000
xdebug.remote_handler=dbgp

xdebug.idekey=netbeans-xdebug (although I think it should work without this too)

尝试删除第一行的中断。也可以尝试使用这些选项直接从控制台运行调试。最后检查在NetBeans和xdebug中是否设置了正确的侦听端口,因为这也可能导致问题。