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%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 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%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%