I have a .env
file containing my database connection details, as is normal for Laravel 5. I want to override these for testing, which I can do in phpunit.xml
. However, doing this seems to go against the philosophy of .env
which is not to commit environmental configurations, particularly passwords.
Is it possible to have something like .env.testing
and tell phpunit.xml
to read from that?
Copy your .env
to .env.testing
, then edit the .env.testing
file and change the APP_ENV
parameter to make it like this APP_ENV=testing
this way you will be able to specify your settings int this new file
In case you don't want to create a new .env.testing
file you have to specify your variables in the phpunit.xml
in the php section with the values you need, something like this
<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>
Just use the key values in the name section and the value of that key in the value section.
For this example I am specifying phpunit to use an sqlite database with the name of testing.
By the way in config/database.php I added this
'default' => env('DB_CONNECTION', 'mysql'),
to use mysql by default unless I specify something diferent, as in this case.