laravel - laravel phpunit - 为什么测试刷新实时数据库
问题描述
我有一个 laravel 项目,它有一个问题,这意味着,每当我运行测试时,db 数据库都会被刷新(我正在使用use RefreshDatabase;
),而不是 test-db 数据库。
这真的很令人困惑,因为一切看起来都很好——我看不出我错过了什么。
当我运行时dd(app()->environment());
,它显示“正在测试”,所以我希望 db-test 数据库能够刷新。
我正在使用 phpstorm,但我认为这不是问题所在。
这是(经过清理的)env 文件:
DB_HOST=127.0.0.1
DB_DATABASE=db
DB_USERNAME=root
DB_PASSWORD=
TEST_DB_HOST=127.0.0.1
TEST_DB_DATABASE=test-db
TEST_DB_USERNAME=root
TEST_DB_PASSWORD=
(清理)配置/database.php:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'db'),
'username' => env('DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''),
// other settings
],
'test-mysql' => [
'driver' => 'mysql',
'host' => env('TEST_DB_HOST', 'localhost'),
'port' => env('TEST_DB_PORT', '3306'),
'database' => env('TEST_DB_DATABASE', 'test-db'),
'username' => env('TEST_DB_USERNAME', 'root'),
'password' => env('TEST_DB_PASSWORD', ''),
// other settings
],
和(净化的)phpunit.xml:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false">
<testsuites>
<testsuite name="Application Test Suite">
<directory>./tests/</directory>
</testsuite>
</testsuites>
<php>
<env name="APP_ENV" value="testing"/>
<env name="APP_URL" value="http://app.localhost"/>
<env name="DB_CONNECTION" value="test-mysql"/>
<env name="MAIL_DRIVER" value="log"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
</phpunit>
有没有人知道这可能是什么或下一步在哪里检查?
解决方案
确保 phpstorm 使用正确的 phpunit 配置文件:
设置 > 语言和框架 > PHP > 测试框架 > 你的配置 > 测试运行器。
Default configuration file
应该有正确的路径。
推荐阅读
- unit-testing - 如何使用 jasmine-marbles 在 rxjs 管道中测试 timeout()
- android - ListView 上的空对象引用
- java - 执行时打开多个 JFrame
- python - 如何在另一个长时间运行的 python 脚本运行时运行其他行?
- css - scss 文件在本地工作但不能在部署中工作,在 chrome 中工作,而不是在 IE 中
- powershell - 将文件作为 PDF 批量打印到新文件夹
- ios - Swift:仅在一个子视图控制器上隐藏状态栏
- python - 为什么使用并发线程时数据重复
- excel - 如何在 DAX 中应用带有两个过滤器的计算函数来获取运行总和
- python - 如何在 Python 中使用滑动重叠窗口消除 For 循环?