У меня есть некоторые проблемы с загрузкой Laravel правильного файла .env для моих тестовых случаев.
Я использую PHPUnit со следующим набором переменных в 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">
<testsuites>
<testsuite name="Application Test Suite">
<directory suffix="Test.php">./tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
<exclude>
<file>./app/Http/routes.php</file>
</exclude>
</whitelist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
</php>
</phpunit>
В моем файле .env.testing у меня есть:
APP_ENV=testing
DB_CONNECTION=sqlite
И я установил его соединение в config / database.php:
'sqlite' => [
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => ''
]
Он просто не загружает файл .env.testing. Если я сделаю это в моем TestCase.php:
dd(env('APP_ENV'));
Я все еще получаю «развитие» из моего файла .env
Я также пытался использовать:
$app->loadEnvironmentFrom('.env.testing');
Вроде предложено в ветке Вот
У кого-нибудь есть идеи, что может быть не так?
В соответствии с документация для 5.2 Вы должны установить вас env
переменные в вас phpunit.xml
,
Таким образом, чтобы установить соединение с БД на sqlite, вы должны добавить:
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>
внутри <php></php>
теги.
Надеюсь это поможет!
Моя проблема была довольно похожа. Файл env .env.testing вообще не читался.
Я попытался поместить var_dump повсюду в мой тестовый файл, все было в порядке, но даже var_dump (env («APP_NAME»)) был нулевым.
Я решил набрать «php artisan config: clear», и все вернулось к норме.
Не уверен, что я сделал, но у меня это сработало 🙂