PDO-Verbindung wird nicht geschlossen, wenn phpunit mit symfony 2.X läuft

8

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%     
GirginSoft 03.06.2013, 08:02
quelle

2 Antworten

6

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%     
bulutcagatay 05.06.2013, 11:02
quelle
3

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.

    
conny 20.03.2015 03:11
quelle