joshhanley / livewire-dusk-testbench
为Livewire包开发提供Laravel Dusk测试辅助工具。
Requires
- php: ^8.1
- livewire/livewire: ^3.1|dev-master
- orchestra/testbench-dusk: ^8.0|^9.0
- psy/psysh: ^0.11.1|^0.12
Requires (Dev)
- spatie/laravel-ray: ^1.10
This package is auto-updated.
Last update: 2024-09-16 03:52:44 UTC
README
Livewire Dusk Testbench是一个便利的包装器,它围绕Orchestral Testbench Dusk,使您更容易使用Laravel Dusk测试您的包中的Livewire组件。
此代码由Caleb Porzio为测试Livewire本身而开发,并由Josh Hanley打包供他人使用。
入门
建议在阅读此文档之前先阅读这些包的文档
安装
要使用composer安装,请在终端中运行以下命令
composer require --dev joshhanley/livewire-dusk-testbench
从该包的V2版本升级
- phpunit.xml中的App key不再需要。
public array $packageProviders = [];
的签名现在具有数组类型定义。configureViewDirectory()
方法已重命名为viewsDirectory
,现在应返回视图目录的路径字符串。还需要返回一个字符串类型的返回值。$testsNamespace
属性和configureTestsDirectory()
方法不再需要,因此可以删除。tweatApplicationHook()
方法现在是static
方法。- 旧README中的“可能的覆盖”列表中的几乎所有项都不再相关,可以删除。剩余的列表在下文中列出。
- 测试不再需要调用
$this->browse()
方法,而是您可以调用Livewire::visit(MyComponent::class)
,Livewire:visit的第一个参数不再是$browser
,而是您的组件类。以下是一些示例
旧的测试结构
/** @test */ public function it_can_count() { $this->browse(function (Browser $browser) { Livewire::visit($browser, CounterComponent::class) // Assertions here ; }); }
新的测试结构
/** @test */ public function it_can_count() { Livewire::visit(CounterComponent::class) // Assertions here ; }
用法
要使用此包,您需要
- 设置您的浏览器基础测试用例
- 注册您的包服务提供者(如果需要)
- 设置布局视图(如果需要)
- 配置测试目录和命名空间(如果需要)
然后您就可以开始测试了。
您可以根据需要覆盖其他配置选项。
设置浏览器测试用例
要使用Livewire Dusk Testbench,您只需在您的dusk测试中扩展LivewireDuskTestbench\TestCase
而不是扩展Orchestra\Testbench\Dusk\TestCase
。
或者在您的基浏览器测试用例中配置此选项
<?php class BrowserTestCase extends LivewireDuskTestbench\TestCase { // }
注册包服务提供者
在$packageProviders属性中注册您的包服务提供者以确保它们在测试中加载
public array $packageProviders = [ YourPackageServiceProvider::class, ];
设置布局视图
要添加其他包到您的应用程序布局进行测试,例如AlpineJS,您需要创建一个自定义布局。
通过在包中的某个位置创建一个views/components/layouts
文件夹,并在其中添加一个位于布局文件夹内的app.blade.php
文件来创建您自己的应用程序布局。
根据需要填充您的应用程序布局。
然后通过覆盖viewsDirectory
方法返回您创建的views
文件夹的路径来设置您的基视图文件夹。
例如
存储您的视图文件夹和应用程序布局的好位置是在您的Dusk浏览器测试文件夹中。
在包的根目录中创建以下目录和文件tests/Browser/views/components/layouts/app.blade.php
然后在您的 tests/Browser/TestCase.php
文件中添加
public function viewsDirectory(): string { // Resolves to 'tests/Browser/views' return __DIR__.'/views'; }
Livewire Dusk 宏
Livewire 提供了一组 Dusk 宏,您可以使用它们。
请查看 Livewire 源代码中的它们,位置在 'livewire/src/Features/SupportTesting/DuskBrowserMacros.php'。
此外,该包还提供以下功能
assertSeeInOrder('@container', ['a', 'b', 'c'])
assertIsVisibleInContainer('@container', '@item')
assertIsNotVisibleInContainer('@container', '@item')
assertHasClasses('@selector', ['class1', 'class2', 'class3'])
assertHasOnlyClasses('@selector', ['class1', 'class2', 'class3'])
assertMissingClasses('@selector', ['class1', 'class2', 'class3'])
assertConsoleLogHasErrors()
assertConsoleLogMissingErrors()
assertConsoleLogHasError($message)
assertConsoleLogMissingError($message)
示例包
已经设置了一个示例包,展示了如何使用该包。在此处查看
可能的覆盖
以下是一些您可以在浏览器 TestCase 文件中覆盖的设置,以满足您的测试需求。以下为默认值
public $packageProviders = []; public function viewsDirectory(): string { return ''; } public static function tweakApplicationHook() { return function () {}; }
故障排除
这只是 Orchestral Testbench Dusk 的便利包装,以便更容易地在您的包中测试 Livewire 组件。
请参考相关包的文档进行故障排除。