Laravel Dusk (Laravel 5.4 的新变化系列)

file

当编写接口测试时,Laravel 提供了一组有用的帮助方法,用 Symfony BrowserKit 组件来模拟 Web 浏览器的行为,使其可以方便地单击链接,填充表单文件或提交表单。但是,如果应用程序使用 JavaScript 和 AJAX 来加载页面,就没 BrowserKit 啥事了。

但是,Laravel 5.4 引入了 Laravel Dusk 这一新工具,来解决这个问题。

交互友好

Dusk 是能够在 JavaScript 的应用程序下使用的一个接口浏览器测试工具。它的目的是提供正确的方式进行页面交互测试,所以可以使用 Dusk 去点击按钮或者链接、填写表单、甚至拖放。

使用 Dusk 可以打开多个浏览器窗口测试,这样测试有 socket 的应用程序时会更容易。比如打开两个窗口,第一个交互,第二个查看结果。

启动更快

Dusk 利用 ChromeDriver 和 Facebook PHP-webdriver 进行接口测试。它作用于任何 Selenium 浏览器,而它自带的 ChromeDriver 默认情况下会根据你安装的方式(JDK 或 Selenium)进行保存。这使得 Dusk 很容易使用,而不需要经历设置 Selenium 和每次启动服务器这些艰难的过程。此外,Taylor Otwell 提到 Dusk 测试运行得比 Selenium 更快。

喝咖啡

Dusk 会比 BrowserKit 更自然。你不用等待某事完成或使用睡眠和暂停去等待事情出现。相反,Dusk 的存在可以让你把时间花在检查 JavaScript 上,或者让 CSS 选择器可以有一个更好的方式来测试 JavaScript 的功能。

Dusk 还将自动保存失败的测试的屏幕截图!可以看到页面以及知道什么地方出了错。

另一个很好的功能是它将提供方便的帮助方法,如 loginAs ,你可以给它一个 user instance.t 去记录用户,这样测试时就无需每次都通过屏幕登录而能直接访问任何验证的 URL。

小技巧

Otwell 还提供了关于 Dusk 测试环境的一些信息,5.4 的应用程序根目录将包含一个 .env.dusk 文件以定义测试环境。要运行 Dusk 测试,不会先直接使用 PHPUnit。而是调用 Dusk 的 artisan 命令,它将代理到 PHPUnit 并备份 .env 文件。然后,它会将 .env.dusk 文件移动到用于 Dusk 测试的环境。完成后,它会把 .env 文件复原。

Tips

请注意,如果使用了 Laravel 5.3 的应用程序,并且希望在不丢失当前测试的情况下升级到 5.4,则可以使用旧的 BrowserKit 测试。 Laravel BrowserKit Testing 的包将在 Laravel 5.4 上提供 Laravel 5.3 风格的 “BrowserKit” 测试。

更多扩展

简单的入门可以看 Laracasts 的视频:Browser Testing With Laravel Dusk
深入学习可以查看资讯专栏文章 Laravel Dusk 前世今生(Laravel 5.4 新兵参上)

参考链接:https://laravel-news.com/laravel-dusk-is-c...

本作品采用《CC 协议》,转载必须注明作者和本文链接
Stay Hungry, Stay Foolish.
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!