为什么 Laravel 继续使用 .env 进行测试?
Why Laravel keeps on using .env for testing?
我正在为我的应用程序使用 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>
这里是 database.php mysql_testing 的设置:
'mysql_testing' => [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'larabor_testing',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'zabor_t_',
'strict' => false,
],
问题是在测试期间它仍然继续读取正常的 .env 文件并从那里使用数据库,即使我在两个 [=39= 中都指定了数据库 'larabor_testing' ] 和 .env.testing 并在 phpunit.xml 文件中将其设置为默认值
在您的 phpunit.xml
中,您引用了错误的环境名称,请勿使用 DB_DEFAULT
,请使用 DB_CONNECTION
。
<env name="DB_CONNECTION" value="mysql_testing"/>
我正在为我的应用程序使用 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>
这里是 database.php mysql_testing 的设置:
'mysql_testing' => [
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'larabor_testing',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'zabor_t_',
'strict' => false,
],
问题是在测试期间它仍然继续读取正常的 .env 文件并从那里使用数据库,即使我在两个 [=39= 中都指定了数据库 'larabor_testing' ] 和 .env.testing 并在 phpunit.xml 文件中将其设置为默认值
在您的 phpunit.xml
中,您引用了错误的环境名称,请勿使用 DB_DEFAULT
,请使用 DB_CONNECTION
。
<env name="DB_CONNECTION" value="mysql_testing"/>