Laravel Datenbank beim Testen erstellen

8

Ich versuche, meinen Komponententest auszuführen und während der Installation eine Datenbank zu erstellen. Aus irgendeinem Grund bekomme ich den Fehler Unknown database 'coretest' . Wenn ich die Datenbank manuell erstellen und den Test ausführen, bekomme ich Can't create database 'coretest'; database exists .

Die Anweisung drop database funktioniert gerade jetzt in der create database.

Hier sind meine Methoden setUP und tearDown:

%Vor%     
ipengineer 28.06.2013, 20:57
quelle

4 Antworten

10

Der Grund, warum Sie diesen Fehler erhalten, ist einfach, weil Laravel versucht, eine Verbindung zu der in config angegebenen Datenbank herzustellen, die nicht existiert.

Die Lösung besteht darin, aus den Einstellungen eine eigene PDO-Verbindung zu erstellen, ohne die Datenbank anzugeben (PDO erlaubt dies), und die CREATE DATABASE $dbname -Anweisung auszuführen, die sie verwendet.

Wir haben diesen Ansatz zum Testen in unserem Projekt ohne Probleme verwendet.

Hier Code:

%Vor%     
neoascetic 09.09.2013 06:05
quelle
2

neoascetic hat die beste Antwort, weil Sie Laravels Datenbankkonfigurationsdatei im Wesentlichen neu starten müssen.

Ein cleverer Hack besteht also darin, die Datenbank erneut zu erstellen, nachdem Sie sie gelöscht haben. Keine Notwendigkeit, Konfiguration / Datenbank zu berühren.

%Vor%     
Ryan Boyd 19.11.2015 15:00
quelle
1

Ich habe das Gefühl, dass ich eine viel sauberere Methode habe, dies zu tun. Führen Sie einfach die Befehle normal durch die Shell aus.

%Vor%     
Leng 25.09.2014 03:57
quelle
0

In Laravel 5 ist es möglich, Migrationen intern zu dem Laravel-Prozess aufzurufen, der schneller läuft als mit externen Befehlen.

Rufen Sie in TestCase :: setUp (oder früher) den Migrationsbefehl mit:

auf %Vor%     
Israel Zion Shirk 30.08.2015 05:42
quelle

Tags und Links