Ich entwickle eine Anwendung mit mehreren Datenbankzugriff und ich möchte PHPUnit Tests mit diesem haben. Mein aktueller Ansatz ist es, in der config\databases.php
mehrere Verbindungen (mysql, mysql2, mysql3) zu haben, so dass ich in der env-Datei einen anderen Zugriff für alle von ihnen haben kann. Aus diesem Grund haben die Modelle die Variable $connection
definiert. In meinem ersten Funktionstest möchte ich auf eine Seite zugreifen und nur die Daten sehen, die ich in meiner Fabrik zur Verfügung stelle, um die Dinge zu starten. In meiner phpunit.xml
Datei habe ich die DB_CONNECTION
als sqlite
und für jede der MySql Einstellung die value=":memory:"
haben.Laravel mehrere Datenbanken PHPUnit
SPÄTER EDIT
<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_1" value=":memory:"/>
<env name="DB_DATABASE_2" value=":memory:"/>
<env name="DB_DATABASE_3" value=":memory:"/>
</php>
So oben Sie den entsprechenden Code von PHPUnit finden.
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db1
DB_USERNAME=xxx
DB_PASSWORD=xxx
DB_HOST_2=127.0.0.1
DB_PORT_2=3306
DB_DATABASE_2=db2
DB_USERNAME_2=xxx
DB_PASSWORD_2=xxx
DB_HOST_2=127.0.0.1
DB_PORT_2=3306
DB_DATABASE_3=db3
DB_USERNAME_3=xxx
DB_PASSWORD_3=xxx
Das Problem, das ich habe, ist die Tatsache, dass, wenn ich die Tests ausführen, ich diesen Fehler haben ->PDOException: SQLSTATE[HY000] [1049] Unknown database ':memory:'
.
Also irgendwie Laravel analysiert nicht den Speicherwert. Jeder Vorschlag wird geschätzt. Vielen Dank
Was meinst du damit Sie jedes der mysql müssen Werteinstellung =: Speicher :? – Devon
Könnten Sie bitte einen relevanten Code (Tests und Configs) posten? –
Sie müssen Ihre Datenbankkonfigurationsdatei posten, da ich davon ausgehe, dass Sie größere Änderungen vorgenommen haben, wenn Sie 'DB_DATABASE_1',' DB_DATABASE_2' und 'DB_DATABASE_3' anstelle von' DB_DATABASE' verwenden. – Devon