Laravel。测试清除活动数据库

Laravel. Tests clear the active DB

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

我有测试环境变量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

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

研究了很久stack trace,终于找到问题所在了!尽管如此,缓存竟然是。 需要清除配置缓存 ('php artisan config: clear'),因为 Laravel 存储了旧的连接名称。

我只是尝试清除缓存(“php artisan cache: clear”)或同时清除和缓存配置(“php artisan config: cache”)。这就是它不起作用的原因。

顺便说一下,GitHub 上有一个关于这个的问题。但是我找不到它,因为我不知道问题出在哪里。有一个小窍门可以避免在 运行 测试缓存配置和路由之前每次都清除配置缓存。

感谢@P.K.Tharindu 的帮助。你离答案很近了。