Laravel UnitTest -> 环境变量被完全忽略

Laravel UnitTest -> environment variables are totally ignored

我快要运行疯了!

我在 xampp (not php artisan serve) 上有一个简单的本地 Laravel 设置 mysql 运行 没问题。 现在我想设置 php 单元。我阅读了 Laravel 文档,阅读了大量博客 post,最后发现了 YouTube。

我尝试使用 .env.testing,在 phpunit.xml 中配置了变量,我还在 config/database.php

中尝试了不同的连接块

我可以做任何我想做的事,phpunit 仍然采用在 运行ning php artisan config:cache

之后在 .env 中激活的数据库设置

即使我直接将.env.testing传给运行宁php artisan test --env=testing,php单元仍然占用生产数据库。

我错过了什么告诉 phpunit 在这个配置中使用另一个数据库并且不要忽略我在 .env.testingphpunit.xml 上的环境输入?

.env:

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=

.env.testing:

DB_CONNECTION=mysql_testing
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=mydb_test
DB_USERNAME=root
DB_PASSWORD=

phpunit.xml:

<server name="APP_ENV" value="testing"/>
<server name="DB_CONNECTION" value="mysql_testing"/>
<server name="DB_DATABASE" value="mydb_test"/>

config/database.php:

'mysql' => [
    'driver' => 'mysql',
    'database' => env('DB_DATABASE', 'forge'),
...
]
'mysql_testing' => [
    'driver' => 'mysql',
    'database' => env('DB_DATABASE', 'forge'),
...
]

我有两个数据库:mydbmydb_test

我也测试过这个版本:

config/database.php:

'mysql' => [
    'driver' => 'mysql',
    'database' => env('DB_DATABASE', 'mydb'),
...
]
'mysql_testing' => [
    'driver' => 'mysql',
    'database' => env('DB_DATABASE_TEST', 'mydb_test'),
...
]

...在我的 phpunit.xml.env

中有 DB_DATABASE_TEST=mydb_test

Phpunit 仍然使用 mydb

谢谢!

感谢Marcel Santing!通过我所有的尝试和不同的方法,我根本没有 运行 php artisan optimize:clear,这造成了差异。