为什么Laravel继续使用.env进行测试?

时间:2016-11-17 09:18:33

标签: laravel testing phpunit laravel-5.1

我正在为我的应用程序使用Laravel 5.1。 我正在尝试为我的测试环境创建自定义.env文件。我称之为 .env.testing

以下是内幕:

APP_ENV=testing
APP_DEBUG=true
APP_KEY=sQy8pV7uVnVtQrL3wBIPESJXhVCYGVyE

DB_HOST=localhost
DB_DATABASE=larabor_testing
DB_USERNAME=root
DB_PASSWORD=

CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=sync

MAIL_DRIVER=log
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

这是我的 phpunit.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="bootstrap/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false">
    <testsuites>
        <testsuite name="Application Test Suite">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>
    <filter>
        <whitelist>
            <directory suffix=".php">app/</directory>
        </whitelist>
    </filter>
    <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_DEFAULT" value="mysql_testing"/>
    </php>
</phpunit>

以下是mysql_testing的 database.php 设置:

 'mysql_testing' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'larabor_testing',
        'username'  => 'root',
        'password'  => '',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => 'zabor_t_',
        'strict'    => false,
 ],

问题是,在测试期间,它仍然继续读取正常的.env文件,并从那里利用数据库,即使我已经指定了数据库&#la; larabor_testing&#39;在 database.php .env.testing 中,并将其设置为 phpunit.xml 文件中的默认值

1 个答案:

答案 0 :(得分:0)

phpunit.xml中,您引用了错误的环境名称,请勿使用DB_DEFAULT,请使用DB_CONNECTION

<env name="DB_CONNECTION" value="mysql_testing"/>