Wir haben etwa 180 Unit Tests implementieren webtestcase
Klasse und Tests laufen über Controller.
Wenn wir jedoch die Komponententests ausführen, öffnen sie zu viele Verbindungen zu db. Aufgrund von zu vielen aktiven TCP-Verbindungstest sind nach 120. Test fehlgeschlagen. Alle Verbindungen sind aktiv, während Tests ausgeführt werden.
In der tearDown-Funktion rufen wir die Close-Funktion des Entity-Managers auf, aber es gibt nichts, was keinen Einfluss hat. Es gibt einige Klassen, die den Verweis auf das Verbindungsobjekt beibehalten, denke ich.
Weil in PHP-Handbuch erwähnt, über PDO-Verbindung geschlossen, wenn das Objekt null zugeordnet ist. Wir machen das auch, aber keine Änderungen. P.S: Unsere Komponententests sind Funktionstests. Arbeitet über Controller und integriert mit db, es gibt keine Mock-Objekte
Wo ist unser Fehler? Wie können wir das Problem beheben?
Das sind meine Verbindungsparameter in config_test.yml
%Vor%Haben Sie Ihre phpunit.xml.dist-Datei überprüft?
Ich denke, du solltest dir das ansehen; Ссылка
Stellen Sie sicher, dass Ihre Parameter unter
identisch sind %Vor%Die Aktivierung der Prozessisolierung hat den Nebeneffekt, dass die Testsuite absurderweise langsamer ausgeführt wird.
Ein besserer Ansatz besteht darin, Doctrine explizit dazu zu bringen, seine Verbindungen zu schließen, entweder bei test trineDown, tearDownAfterClass oder einer anderen Methode, wie zB:
%Vor% In diesem Beispiel ist es Sache des Kunden, die Entity Manager-Instanz, die er hat, als $this->em
zu speichern. Aber wenn Sie Doctrine verwenden, könnten Sie den Code möglicherweise besser verallgemeinern, indem Sie über static::$kernel->something
auf den Doctrine-Service zugreifen.
Tags und Links symfony phpunit doctrine2 connection