首页 > 解决方案 > 拉拉维尔。测试清除活动数据库

问题描述

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

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

标签: phplaraveltestingphpunit

解决方案


研究了半天的stack trace,发现了问题!尽管如此,缓存竟然是。需要清除配置缓存('php artisan config: clear'),因为 Laravel 存储旧的连接名称。

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

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

感谢@PKTharindu 的帮助。你已经接近答案了。


推荐阅读