php - 拉拉维尔。测试清除活动数据库
问题描述
测试后,我的活动数据库中的表是空的。
我有测试环境变量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
解决方案
研究了半天的stack trace,发现了问题!尽管如此,缓存竟然是。需要清除配置缓存('php artisan config: clear'),因为 Laravel 存储旧的连接名称。
我只是尝试清除缓存(“php artisan cache:clear”)或同时清除并缓存配置(“php artisan config:cache”)。这就是它不起作用的原因。
顺便说一句,GitHub上有一个关于这个的问题。但我找不到它,因为我不知道问题出在哪里。如果您缓存配置和路由,有一个小技巧可以避免每次在运行测试之前清除配置缓存。
感谢@PKTharindu 的帮助。你已经接近答案了。
推荐阅读
- prolog - 这个 Prolog 列表操作程序是做什么的?
- javascript - CSS:在两个垂直的 div 上水平对齐一对 div
- python - 线程中的while循环
- python - python setup.py sdist bdist_wheel 的输出目录
- matlab - 在 MATLAB 中查找函数的最小值和最大值
- php - 带有帖子的容器,使用 MySQL 和 PHP - 单击右箭头更改文章
- android - Android 应用程序在启动时关闭。给出错误'原因:仅执行(无读取)内存访问错误;可能是由于 .text' 中的数据
- java - 缺少 While 循环逻辑
- visual-studio-code - VS Code 仅显示 1 行可能的导入路径。如何将其转换回默认列表框?
- sql - 无法在 SQL Server 的现有列中分配默认约束