Laravel 测试之 - 浏览器测试 (Laravel Dusk)
简介
Laravel Dusk 提供了富有表现力、简单易用的浏览器自动化以及相应的测试 API。Dusk 只需要使用一个单独的 ChromeDriver,不再需要在你的机器中安装 JDK 或者 Selenium。不过,依然可以 按照你自己的需要安装其他 Selenium 兼容的驱动引擎。
安装
将 laravel/dusk
添加到你的项目 Composer 依赖中:
composer require --dev laravel/dusk
永远不要在生产环境安装 Dusk。否则,任何人都可以未经授权地访问你的应用。
安装了 Dusk 之后,你需要注册 Laravel\Dusk\DuskServiceProvider
服务提供者。通常,这将通过 Laravel 的服务提供者自动发现机制去自动完成。
接下来运行 dusk:install
Artisan 命令:
php artisan dusk:install
这将会在你的 tests
目录下创建一个 Browser
目录,同时包含了一个测试用例模版。然后在你的 .env
文件中设置 APP_URL
环境变量。这个变量值要与你在浏览器访问你应用的 URL 一致。
使用 dusk
Artisan 命令来运行你的测试。dusk
命令可以接受任何 phpunit
能接受的参数:
php artisan dusk
使用其他浏览器
Dusk 默认使用 Google Chrome 和 ChromeDriver 来运行你的浏览器测试。当然,你也可以运行你的 Selenium 服务器,然后对任何你想要的浏览器运行测试。
打开你的 tests/DuskTestCase.php
文件,这个文件是你应用中最基础的 Dusk 测试用例。你可以在这个文件中移除 startChromeDriver
方法。这样 Dusk 就不会自动运行 ChromeDriver:
/**
* 为 Dusk 的测试做准备。
*
* @beforeClass
* @return void
*/
public static function prepare()
{
// static::startChromeDriver();
}
然后,你可以通过简单地修改 driver
方法来连接到你指定的 URL 和端口。同时,你要修改传递给 WebDriver 的「desired capabilities」:
/**
* 创建 RemoteWebDriver 实例。
*
* @return \Facebook\WebDriver\Remote\RemoteWebDriver
*/
protected function driver()
{
return RemoteWebDriver::create(
'http://localhost:4444/wd/hub', DesiredCapabilities::phantomjs()
);
}
开始
创建测试
使用 dusk:make
Artisan 命令来创建 Dusk 测试。创建好的测试类 会放在 tests/Browser
目录:
php artisan dusk:make LoginTest
运行测试
使用 dusk
Artisan 命令来运行你的浏览器测试:
php artisan dusk