Was ich in der Regel tun, ist die Zugabe in phpunit.xml
:
<env name="DB_CONNECTION" value="mysql_testing"/>
Dann in config/database.php
ich erstellen Duplikat mysql
Verbindung etwas wie folgt aus:
'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,
],
und dann in .env
I Testverbindungseinstellungen zu definieren:
#TESTING
DB_TESTING_HOST=127.0.0.1
DB_TESTING_DATABASE=test_database
DB_TESTING_USERNAME=root
DB_TESTING_PASSWORD=pass
Es funktioniert ohne Probleme und Sie brauchen nichts in .env
zu wechseln, wenn Sie Tests laufen und Testen Anwendung manuell auf derselben Maschine/in demselben Verzeichnis
EDIT
Wenn Sie Situation wie dieser , wahrscheinlich mehrere Modelle zu modifizieren ist nicht der beste Weg, aber wenn Sie möchten, unabhängig von Verbindung derselben Datenbank verwenden, setzen Sie so etwas tun:
Angenommen, Sie Umgebung zu testen gesetzt haben, was getan werden kann, mit:
<env name="APP_ENV" value="testing"/>
in Ihrer phpunit.xml
Datei können Sie in Ihre AppServiceProvider
Klasse gehen Sie und in register
Methode etwas tun, wie folgt aus:
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');
}
Ich habe es nicht ausprobiert, aber es sollte funktionieren - es sollte das machen beim Laufen Tests können Sie alle Ihre Verbindungen auf die gleiche Test-Datenbank (oder auf andere Datenbanken, wenn Sie möchten) setzen
Tun Sie dies nicht. Mit der Datei 'phpunit.xml' können Sie' 'env''-Werte überschreiben, während Sie Tests ausführen, etwa durch' '. Überschreiben Sie die Umgebungsvariable 'DB_CONNECTION' und haben Sie sie. –
ceejayoz