我按照官方的Laravel文档安装了Laravel -黄昏后,运行了这个命令:
php artisan make:component CardComponentTest
然后尝试立即运行:
php artisan dusk tests/Browser/Components/CardComponentTest.php
我得到这个错误:
Class 'TestsBrowserComponentsCardComponentTest' could not be found in '/var/www/html/tests/Browser/Components/CardComponentTest.php'.
我测试的文件和路径是正确的:
ls -l /var/www/html/tests/Browser/Components/CardComponentTest.php
上面写着:
-rw-r--r-- 1 djw djw 6917 Dec 3 11:25 /var/www/html/tests/Browser/Components/CardComponentTest.php
所以它存在并且可读。
我检查了文件中的命名空间:
<?php
namespace TestsBrowserComponents;
看起来也不错。
我检查了composer.json
,在这里我有这个部分:
"autoload-dev": {
"psr-4": {
"Tests\": "tests/"
}
},
文件存在,命名空间是好的,命名空间在composer.json中被拾取。
我也试着运行composer dump-autoload
。所有好。
你知道这是怎么回事吗?
错误:
Class 'TestsBrowserComponentsCardComponentTest' could not be found in '/var/www/html/tests/Browser/Components/CardComponentTest.php'.
表明你没有CardComponentTest测试用例。因为CardComponentTest不是测试用例,而只是测试的一个组件/部分。
前面已经说过,组件本身并不是测试。但是如果你真的想测试CardComponentTest
,你可以替换
use LaravelDuskComponent as BaseComponent;
class CardComponentTest extends BaseComponent
:
use TestsDuskTestCase;
class CardComponentTest extends DuskTestCase
在你这样做之后,你可以运行php artisan dusk tests/Browser/Components/CardComponentTest.php
,你只需要先添加测试方法。一个例子:
public function testComponentExample()
{
$this->browse(function (Browser $browser) {
$browser->visit('/')
->assertSee('Laravel');
});
}
但是在组件文件夹中创建测试用例不是最佳实践。您应该像官方文档所说的那样创建测试用例。运行dusk:make
代替dusk:component
。一个例子:
php artisan dusk:make SimpleBrowserTest
现在你可以运行
php artisan dusk tests/Browser/SimpleBrowserTest.php
如果你看一下文档,组件是而不是一个测试本身。因此,应该而不是命名组件"*Test"您不应该像运行黄昏测试那样运行组件。
您将在黄昏测试中使用您的组件,如下所述:https://laravel.com/docs/9.x/dusk使用组件
组件用于重复操作,例如在选择器中选择日期,然后在您的测试用例中进一步使用,例如在表单中,或者可能在您的UX中发生一些可断言的更改。