ddev um eine zweite lokale Datenbank für Tests ergänzen
Die Verwendung einer in-memory SQLite-Datenbank für PHPUnit und Pest Tests ist gängige Praxis. Allerdings stößt SQLite bei größeren oder langfristigen Projekten an seine Grenzen, insbesondere wenn es um bestimmte Datenbankoperationen wie dropColumn()
oder das sortieren von Spalten geht. SQLite unterstützt diese spezifischen Operationen nicht.
Solange es geht, nutze ich SQLite, aber ab einem gewissen Zeitpunkt wird das unmöglich. Wer DDEV verwendet, kann das Problem leicht umgehen indem er eine zweite MySql Datenbank in den Container hängt.
Erstellen einer zusätzlichen Datenbank
Platzieren Sie im Verzeichnis .ddev/commands/web/
die Datei create_testing_database.sh
Um dieses Script bei jedem Start des Contains auszuführen, ergänzen wir einen Hook in der DDEV-Konfigurationsdatei .ddev/config.yaml
. Fügen Sie dort folgenden Abschnitt hinzu:
Integration der neuen Datenbank in PHPUnit oder Pest
Sobald die zweite Datenbank in DDEV eingerichtet ist, besteht der nächste Schritt darin, sie in Ihren PHPUnit- oder Pest-Tests zu verwenden. Hierfür müssen Sie die Konfigurationsdateien dieser Test-Frameworks anpassen oder ein testing-Environment erstellen.
PHPUnit- und Pest-Konfiguration
In der phpunit.xml
Datei ändern Sie die Datenbank-Einstellungen. Stellen Sie sicher, dass die Verbindungsdaten auf Ihre neue Testdatenbank und den spezifischen Port verweisen. Ein Beispielabschnitt könnte so aussehen:
Die neue testing Datenbank kann nun auch über den DB-Client der Wahl aufgerufen werden: