What I usually do is adding in phpunit.xml:
<env name="DB_CONNECTION" value="mysql_testing"/>
Then in config/database.php I create duplicate of mysql connection something like this:
'mysql_testing' => [
'driver' => 'mysql',
'host' => env('DB_TESTING_HOST', 'localhost'),
'database' => env('DB_TESTING_DATABASE', 'forge'),
'username' => env('DB_TESTING_USERNAME', 'forge'),
'password' => env('DB_TESTING_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
and then in .env I define testing connection settings:
#TESTING
DB_TESTING_HOST=127.0.0.1
DB_TESTING_DATABASE=test_database
DB_TESTING_USERNAME=root
DB_TESTING_PASSWORD=pass
It's working without any problems plus you don't need to switch anything in .env if you are running tests and testing application manually on same machine/in same directory
EDIT
If you have situation like this, probably modifying multiple models is not the best way but if you want to use same database regardless of connection set you can do something like that:
Assuming you have set environment to testing what can be done using:
<env name="APP_ENV" value="testing"/>
in your phpunit.xml file you can do go into your AppServiceProvider class and in register method do something like this:
if ($this->app->environment('testing')) {
$this->app['config']->set('database.connections.mysql2.database', 'yourcustom testing database');
// ...
$this->app['config']->set('database.connections.mysql15.database', 'yourcustom testing database');
}
I haven't tried it but it should work - it should make that when running tests you can set all your connections to same testing database (or to other databases if you wish)
phpunit.xmlfile lets you override any.envvalues while running tests, via stuff like<env name="APP_ENV" value="testing"/>. Override theDB_CONNECTIONenvironment variable and have at it.