packsuco / dusk-time-travel
用于时间旅行功能的黄昏浏览器扩展包
Requires
- illuminate/http: ^7.0|^8.0
- illuminate/routing: ^7.0|^8.0
- illuminate/support: ^7.0|^8.0
- laravel/dusk: ^6.0
- symfony/http-foundation: ^5.1.3
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- orchestra/testbench-dusk: ^5.0|^6.0
- phpunit/phpunit: ^9.0
- vimeo/psalm: ^4.3
This package is auto-updated.
Last update: 2024-09-27 07:09:44 UTC
README

用于时间旅行功能的黄昏浏览器扩展包
此包满足了修改请求时间的黄昏测试用例的需求。由于它还不够成熟,可能不会按预期工作,因此欢迎所有PR。但我认为理解这个包的功能很容易。
安装
您可以通过composer安装此包
composer require paksuco/dusk-time-travel
安装包后,需要执行一个关键步骤,以便浏览器拥有时间旅行方法,您需要从Paksuco/DuskTimeTravel/Browser
类扩展您的浏览器类,而不是使用库存的Laravel/Dusk/Browser
。此类充当您的测试用例与Laravel Dusk浏览器之间的中间人。
为此,将以下代码添加到您的DuskTestCase.php
文件中
use \Paksuco\DuskTimeTravel\Browser as TimeTravelBrowser; class DuskTestCase extends BaseTestCase { protected function newBrowser($driver) { return new TimeTravelBrowser($driver); } }
用法
由于您已更改浏览器类,因此您现在可以访问两个新的Dusk浏览器方法:travelTo($time)和travelBack。正如您可以从名称中轻松理解,第一个方法穿越时间,使用Illuminate/Support/Carbon
实例作为时间输入,第二个将其带回来。
注意:由于它使用cookie将修改后的时间传递给浏览器,因此只有下一个请求会受到更改时间的影响,当前页面不会有日期修改。
例如
// test case $this->browse(function ($browser) { // on the homepage, you will see today's date as the current date. $browser->visit("home") ->travelTo(Carbon::tomorrow()); // but, like this, you'll see tomorrows date as the current date $browser->travelTo(Carbon::tomorrow()) ->visit("home"); // an example use case, do something in yesterdays date and expect it to see today. $browser->travelTo(Carbon::yesterday())->visit($itemDetailsPage) ->doStuffInYesterdaysDate() ->travelBack()->visit($itemDetailsPage) ->assertSee(Carbon::yesterday()); });
这两个方法都会使用明天的日期作为下一个请求(AJAX或重定向,无关紧要)。
在您重新创建实例后,或者使用travelBack手动将日期重置为当前日期后,服务器使用的日期将恢复正常。
测试
包含一个测试用例,但由于它是Dusk扩展,测试是在安装了Dusk的Laravel实例上运行的。您可以像.github/workflows/run-tests.yml
工作流程那样测试此插件。
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请查看我们的安全策略了解如何报告安全漏洞。
致谢
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。