编辑:这个问题原则上适用于测试,但基本上我想知道是否可以有多个.env文件可以定义多组环境变量;就像L4如何使用env.local.php
,env.testing.php
等
我使用Laravel 5并在宅基地上开发。
我的.env文件填充了我的本地环境变量(mysql数据库等)。
我希望使用sqlite数据库进行测试,所以我将一些变量添加到phpunit.xml
所以它看起来像这样:
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="DB_DRIVER" value="sqlite" />
<env name="DB_PATH" value="database.sqlite" />
</php>
配置文件中引用了所有适当的环境变量,例如env('DB_DRIVER')
。
然而,当我尝试使用php artisan migrate --env=testing
迁移数据库时,我得到了#34;什么都没有迁移&#34;建议Laravel尝试迁移我的本地(mysql)数据库(已经迁移)。
我决定通过修补匠进一步探索,所以我跑了php artisan tinker --env=testing
。在修补程序中,我运行app()->environment();
,返回&#34;测试&#34;。到目前为止一切都很好!
接下来,我通过$_ENV
回显了env变量,并返回了我的本地环境变量,尽管环境设置为测试。
这是为什么?似乎Laravel无视phpunit.xml env变量而只是使用.env文件而不管...
修改
如果通过phpunit本身运行,似乎laravel只使用phpunit.xml文件,即使环境设置为单独测试。
如果有人知道如何在L5中设置多个环境,我会很感激它,因为仅仅使.env.testing
文件的L4方式无效。
答案 0 :(得分:1)
原始问题的快速解决方法,只是测试环境案例,是从$this->artisan('migrate');
类调用tests/TestCase.php
,因此它将获取在中定义的数据库配置值phpunit.xml
并执行迁移。