如何在Laravel 5中为phpunit指定不同的.env文件?
我有一个包含数据库连接详细信息的文件,这在Laravel 5中是正常的。我想覆盖这些进行测试,我可以在.但是,这样做似乎违背了不提交环境配置(尤其是密码)的理念。.env
phpunit.xml
.env
有没有可能有类似的东西,并告诉从中阅读?.env.testing
phpunit.xml
我有一个包含数据库连接详细信息的文件,这在Laravel 5中是正常的。我想覆盖这些进行测试,我可以在.但是,这样做似乎违背了不提交环境配置(尤其是密码)的理念。.env
phpunit.xml
.env
有没有可能有类似的东西,并告诉从中阅读?.env.testing
phpunit.xml
您可以重写文件中正在使用的文件,其中框架是用于测试的。.env
TestCase
更具体:
测试/测试用例.php
/**
* Creates the application.
*
* @return \Illuminate\Foundation\Application
*/
public function createApplication()
{
/* @var \Illuminate\Foundation\Application $app */
$app = require __DIR__ . '/../bootstrap/app.php';
$app->loadEnvironmentFrom('.env.testing'); // specify the file to use for environment, must be run before boostrap
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
return $app;
}
所有扩展的测试都将使用此配置文件。TestCase
请注意,中定义的任何设置都将覆盖此配置。phpunit.xml
从 Laravel5.4 开始,该函数不再出现在 tests\TestCase
中。它已移至测试\创建应用程序
特征。createApplication
将你的复制到 ,然后编辑文件并更改参数,使其像这样,您将能够指定此新文件的设置.env
.env.testing
.env.testing
APP_ENV
APP_ENV=testing
如果您不想创建新文件,则必须在php部分中指定具有所需值的变量,如下所示.env.testing
phpunit.xml
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value="testing"/>
</php>
只需在名称部分中使用键值,在值部分中使用该键的值。
对于此示例,我指定 phpunit 使用具有测试名称的 sqlite 数据库。
顺便说一句,在config/database中.php我添加了这个默认使用mysql,除非我指定了一些不同的东西,就像在这种情况下一样。'default' => env('DB_CONNECTION', 'mysql'),