Laravel Model Factory ohne Verbindung zur Datenbank

9

Ich möchte Laravels Model Factory in einigen PHPUnit-Tests verwenden. Ich möchte nur eine Model-Instanz erstellen, ohne sie in der Datenbank zu speichern.

Warum benötigt die Model Factory eine Verbindung zur Datenbank? Diese Tests müssen die CI-Umgebung ohne konfigurierte Datenbank weitergeben.

Wenn ich das Modell manuell mit new App\Model($dataArray) erstelle, werden Tests bestanden und die Verbindung wird nicht benötigt.

Ich verwende Model Factory an anderen Stellen, daher möchte ich es in diesen Tests wiederverwenden, um Code-Duplikation zu vermeiden.

Ich benutze MongoDB und jenssegers / laravel-mongodb Bibliothek, aber ich vermute, dass es keine Rolle spielt rein eloquent und z MySQL-Datenbank, das Problem wäre das gleiche.

Test, der ohne Datenbank funktioniert:

%Vor%

Meine Modellfabrik

%Vor%

Test, der eine Datenbankverbindung benötigt:

%Vor%

Vollständige Stapelüberwachung:

%Vor%     
user1292810 10.08.2016, 20:06
quelle

3 Antworten

0

Ich glaube nicht, dass dies derzeit möglich ist. Die Methode make() ruft newModelInstance() auf, die versucht, eine Datenbankverbindung herzustellen.

Sie können den Quellcode selbst überprüfen .

    
Camilo 20.10.2017 21:02
quelle
0

Ich gehe normalerweise zum Erstellen einer ähnlichen Test-DB und führe alle Tests auf dieser DB aus.

Es stellt sicher, dass Ihr Test-DB-Typ der Produktion entspricht und Sie nicht die Produktions-DB zum Ausführen der Tests berühren.

    
Zeshan Khattak 01.03.2018 08:07
quelle
0

Versuchen Sie, DatabaseTransactions zu verwenden?

Zum Beispiel

%Vor%     
David L 02.03.2018 19:05
quelle