Laravel Dusk说找不到'TestsBrowserComponents...'班



我按照官方的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中发生一些可断言的更改。

最新更新