【问题标题】:Laravel UnitTest -> environment variables are totally ignoredLaravel UnitTest -> 环境变量被完全忽略
【发布时间】:2021-08-05 23:55:29
【问题描述】:

我快要疯了!

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

我尝试使用.env.testing,在phpunit.xml 中配置了变量,我还在config/database.php 中尝试了不同的连接块

我可以做任何我想做的事,phpunit 在运行php artisan config:cache 之后仍然会使用在.env 中处于活动状态的数据库设置

即使我通过运行php artisan test --env=testing 直接传递.env.testing,phpunit 仍然会使用prod DB。

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

.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'),
...
]

...DB_DATABASE_TEST=mydb_test 在我的phpunit.xml.env

Phpunit 仍然使用mydb

谢谢!

【问题讨论】:

  • 你也试过“php artisan optimize:clear” ????
  • 你成就了我的一天????极好的;我以为我什么都做了,但是,optimize:clear 做到了。谢谢马塞尔!!

标签: laravel phpunit


【解决方案1】:

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

【讨论】:

  • 有时两个人知道不止一个。
猜你喜欢
  • 2021-10-15
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 2021-02-13
  • 2020-03-31
相关资源
最近更新 更多