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.testing
或 phpunit.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'),
...
]
我有两个数据库:mydb
和 mydb_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
,这造成了差异。
我快要运行疯了!
我在 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.testing
传给运行宁php artisan test --env=testing
,php单元仍然占用生产数据库。
我错过了什么告诉 phpunit 在这个配置中使用另一个数据库并且不要忽略我在 .env.testing
或 phpunit.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'),
...
]
我有两个数据库:mydb
和 mydb_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
,这造成了差异。