Laravel 5.4配置Dusk时测试用例是否必须实现createApplication()方法
问题排查解决步骤
一、PHPStorm要求实现createApplication()方法的误报问题
这个提示是IDE的错误提示,不需要在ExampleTest中实现该方法:
ExampleTest继承的DuskTestCase基类(位于tests/DuskTestCase.php)默认已经引入了CreatesApplicationTrait,该Trait已经内置了createApplication()的实现逻辑,子类无需重复编写- 解决提示的方法:打开PHPStorm的
File > Invalidate Caches...,选择清除缓存并重启IDE,重新索引后误报就会消失
二、执行php artisan dusk不弹出浏览器窗口的排查方案
按优先级逐一排查:
- 先确认本地开发服务已启动:比如你用
php artisan serve启动的话要保持服务运行,同时检查项目根目录的.env.dusk.local文件中的APP_URL配置和你本地服务的访问地址一致,比如APP_URL=http://localhost:8000 - 检查Chrome浏览器已安装:Laravel 5.4的Dusk默认依赖Chrome/Chromium浏览器,未安装的话无法启动
- 关闭无头模式:打开
tests/DuskTestCase.php文件,找到driver()方法中的Chrome启动参数,删除--headless配置项,即可弹出可见的浏览器窗口,修改后的参考配置:
protected function driver() { $options = (new \Facebook\WebDriver\Chrome\ChromeOptions)->addArguments([ '--disable-gpu', // '--headless', 注释或删除这一行就会显示浏览器窗口 '--no-sandbox', ]); return \Facebook\WebDriver\Remote\RemoteWebDriver::create( 'http://localhost:9515', \Facebook\WebDriver\Chrome\ChromeOptions::create()->setCapability( \Facebook\WebDriver\Chrome\ChromeOptions::CAPABILITY, $options ) ); }
- 确认ChromeDriver有执行权限:Linux/macOS环境下执行命令
chmod +x vendor/laravel/dusk/bin/chromedriver-*给驱动文件加执行权限 - 检查端口占用:确认9515端口没有被其他程序占用,ChromeDriver默认使用该端口通信
内容的提问来源于stack exchange,提问作者Mason Wray
相关产品推荐
相关产品推荐

