Laravel Dusk 将加入 Laravel 5.4
发布于 作者: Diaa Fares
当您编写端到端测试时,Laravel 提供了一组有用的辅助方法,使您可以轻松地点击链接、填充输入字段或提交表单。在幕后,Laravel 使用 Symfony BrowserKit 组件来模拟 Web 浏览器的行为。但是,如果您的应用程序使用 JavaScript 和 AJAX 加载页面,BrowserKit 将无法为您工作。
Laravel Dusk 是一个将在 Laravel 5.4 中引入的新工具,用于解决此问题。
Dusk 是一个用于支持 JavaScript 应用程序的端到端浏览器测试工具。它旨在提供进行页面交互测试的正确方法,因此您可以使用 Dusk 执行诸如点击按钮/链接、填写表单甚至拖放之类的操作!
Dusk 利用 ChromeDriver 和 Facebook Php-webdriver 进行端到端测试。它可以与任何 Selenium 浏览器配合使用,但默认情况下它附带 ChromeDriver,这将免除您安装 JDK 或 Selenium 的麻烦。这使 Dusk 非常易于使用,无需经历设置 Selenium 和每次启动服务器的繁琐过程。此外,Taylor Otwell 指出 Dusk 测试的运行速度比 Selenium 快。
Dusk 将比 BrowserKit 更自然;您不必等待某项操作完成或在等待某些操作出现时使用休眠和暂停。相反,Dusk 允许您等待 JavaScript 中的某些条件为真,或等待 CSS 选择器可用,从而提供更好的方法来测试支持 JavaScript 的应用程序。
此外,Dusk 会自动保存您失败测试的屏幕截图!您可以看到页面是什么样子的以及出了什么问题。
另一个不错的功能是它将提供方便的辅助方法,例如 **loginAs**,它允许您传递一个用户实例。它将登录用户,并且测试将直接转到任何经过身份验证的 URL,而无需每次都通过登录屏幕。
Dusk 将允许您在每个测试中打开多个浏览器窗口,这将使测试具有套接字集成的应用程序变得容易。您可以打开两个窗口,与第一个窗口交互,并在第二个窗口中查看结果。
Otwell 还提供了一些有关 Dusk 测试环境的信息;您的应用程序根目录将包含一个 **.env.dusk** 文件来定义您的测试环境。要运行您的 Dusk 测试,您将不会直接使用 PHPUnit。相反,您将调用 Dusk artisan 命令,该命令将代理到 PHPUnit 并备份您的 **.env** 文件。然后,它将移动 **.env.dusk** 文件以作为 Dusk 测试所使用的环境。完成后,它将恢复您的真实 **.env** 文件到其位置。
请注意,如果您有一个使用 Laravel 5.3 的应用程序,并且想要升级到 5.4 而不丢失您当前的测试,则可以使用旧的 BrowserKit 测试。 Laravel BrowserKit 测试 包将在 Laravel 5.4 上提供 Laravel 5.3 风格的“BrowserKit”测试。