Php Laravel 5应用程序始终使用';测试';环境配置
我有一个Laravel 5应用程序,有两个环境和两种配置:测试(用于PHPUnit配置,内存数据库)和本地(我的开发配置) 即使将环境配置为Php Laravel 5应用程序始终使用';测试';环境配置,php,laravel,laravel-5,phpunit,environment,Php,Laravel,Laravel 5,Phpunit,Environment,我有一个Laravel 5应用程序,有两个环境和两种配置:测试(用于PHPUnit配置,内存数据库)和本地(我的开发配置) 即使将环境配置为local,应用程序也只在resources/config/testing文件夹中加载配置。我可以从app_ENV环境变量中看到同一应用程序中的环境,它是local 我是否应该不使用测试配置目录来配置测试 在Laravel 5中配置测试环境的更好方法是什么 Laravel 5不再正确级联配置文件,因此测试配置文件将覆盖本地配置文件中的任何内容 现在,不应该
local
,应用程序也只在resources/config/testing
文件夹中加载配置。我可以从app_ENV
环境变量中看到同一应用程序中的环境,它是local
- 我是否应该不使用测试配置目录来配置测试
- 在Laravel 5中配置测试环境的更好方法是什么
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
</php>
对于behat(验收)测试,Laracasts Laravel behat扩展允许您创建.env.behat文件以更改环境变量
对于phpspec(单元)测试,环境不应该是重要的,因为您单独测试单个方法,并模拟其他一切
对于selenium(integration/system/e2e)测试,无论您在哪里进行测试,环境变量都应该来自服务器上的.env文件 在sqlite上运行测试时,我必须使用的其他要点,而主应用程序通常默认为mysql: 在phpunit.xml中添加类似的内容,如craig.michael.morris所解释:
<env name="DB_DRIVER" value="sqlite"/>
在config/database.php的'sqlite'部分
'default' => env('DB_DRIVER', 'mysql'),
'database' => ':memory:',
1) 打开配置文件database.php
,并在'connections'=>[
'sqlite_testing' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
],
这个内存中的sqlite将用于您的测试
2) 打开.env
文件并确保其具有以下内容:
DB_CONNECTION=mysql
3) 打开phpunit.xml
并在
标记中添加以下内容:
<env name="DB_CONNECTION" value="sqlite_testing"/>
有关数据库迁移的更多详细信息,请参阅文档请共享您的环境设置codemy.env文件只包含一些基本内容,如
APP_env=local
–我下班回家后会复制完整文件我使用phpunit进行集成测试,因此我需要使用单独的数据库。这解决了我的问题,谢谢!投了赞成票,但我也希望看到Codeception的解决方案。感谢您的回复:在Laravel 5.1上,我没有使用DB\u驱动程序
,而是使用DB\u连接
,就像这样:
我从config/database.php
文件中得到了这个值。几天前我自己发现了这个值,然后碰巧在acros这是你的评论:)投票吧!
use DatabaseMigrations;