使用 laravel 黄昏测试数据库

Posted

技术标签:

【中文标题】使用 laravel 黄昏测试数据库【英文标题】:Testing Database using laravel dusk 【发布时间】:2017-09-26 08:55:34 【问题描述】:

我正在使用 laravel 黄昏测试我的 laravel 应用程序,但问题是我无法使用 assertDatabaseHasfunction。当我运行php artisan dusk 命令时,我收到了这个错误:

PHP Fatal error:  Class 'PHPUnit_Framework_Constraint' not found in 
vendor\laravel\framework\src\Illuminate\Foundation\Testing\Constraints\HasIn
Database.php on line 8

这是我的代码:

$this->assertDatabaseHas('teams', [
    'name' => $data['team_name'],
]);

【问题讨论】:

【参考方案1】:

请检查您的phpunit版本:

phpunit --version

如果您正在运行 v6,您可能会遇到麻烦,因为它需要一个命名空间类。在这种情况下,您要么必须切换到旧版本的 phpunit,例如为您的项目在本地安装,然后像这样运行:

php vendor/bin/phpunit --version

或者您可能需要更新您的 Laravel 项目,这可能需要更多的工作,因为您可能需要更改部分代码。

【讨论】:

谢谢,切换到 PHPUnit 5.7 版本后问题解决。 :) @ZeeshanAhmed 你应该继续使用 6.1 和 use PHPUnit\Framework\Constraint。然后扩展Constraint @MarcoAurélioDeleu 它是来自 Laravel 框架的一个类。更改代码不是一个好主意,因为您通常不想维护自己的分叉。正如我上面提到的,更好的选择是升级,但不幸的是 Laravel 在次要版本中进行了重大更改,这使得一些现有项目切换到新版本并非易事。

以上是关于使用 laravel 黄昏测试数据库的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 黄昏没有看到 vuejs 选择器

带有laravel Dusk的测试案例,显示错误'users_email_unique'

PHPUnit 测试使用 XAMPP localhost 而不是 laravel artisan serve

Laravel 忽略测试数据库连接

通过 Codeception 使用存在规则测试 Laravel 5 路由

Laravel在运行单元测试时保存到数据库