Laravel。测试清除活动数据库

时间:2020-10-01 13:12:34

标签: php laravel testing phpunit

活动数据库中的表在测试后为空。

我有测试环境变量DB_CONNECTION=mysql_testing。当我运行测试并执行dd(env('DB_CONNECTION'))时-一切都很好。我看到“ mysql_testing”。

但是当我写dd( \DB::connection()->getDatabaseName())时,我看到了错误的数据库名称(例如'db_name',但是应该是'testing_db_name')。它是活动数据库的名称。不是配置缓存。那里一切都很好。我为“ mysql_testing”连接看到正确的数据库名称。我什至尝试设置测试环境变量DB_DATABASE=testing_db_name

堆栈:Laravel 7.28.3,PHPUnit 8.5.8

2 个答案:

答案 0 :(得分:1)

研究了很长时间的堆栈跟踪后,我发现了问题!都一样,缓存竟然是。 需要清除配置缓存('php artisan config:clear'),因为Laravel存储了旧的连接名称。

我只是试图清除缓存(“ php artisan缓存:清除”)或同时清除并缓存配置(“ php artisan config:缓存”)。这就是为什么它不起作用的原因。

顺便说一下,GitHub上有一个问题。但是我找不到它,因为我不知道问题出在哪里。如果您缓存配置和路由,可以避免在每次运行测试前清除配置缓存,这是一个小小的生活技巧。

感谢@ P.K。Tharindu的帮助。您已经接近答案了。

答案 1 :(得分:0)

根据您如何设置数据库连接,应该定义DB_DATABASE_TESTING=testing_db_name而不是DB_DATABASE=testing_db_name