Seit vier Monaten bauen wir eine komplexe Web-App mit Laravel 4 mit einer guten Unit-Test-Abdeckung. Jetzt haben wir 159 Tests und 592 Behauptungen, um Regression zu verhindern und uns zu erlauben, unsere App leicht zu refaktorisieren.Laravel & PHPUnit: erlauben Prozessisolierung Mysql zu verhindern Zu viele Verbindungen Fehler
Schönes Bild, aber seit einigen Tagen haben wir die folgenden Fehler in den letzten Tests:
PDOException: SQLSTATE[HY000] [1040] Too many connections
Der Grund ist einfach: alle Tests laufen im gleichen Prozess und MySQL erlaubt nur eine bestimmte Anzahl von Zugang in der gleiche Zeit. Jetzt haben wir zu viele Tests. Wenn ich einige Tests in der Mitte meiner Testsuite lösche, werden die letzten bestanden.
Die Lösung könnte sein, PHPUnit in der Prozessisolation wie in der folgenden Konfiguration auszuführen, aber die Laravel-Tests scheinen nicht so gestartet zu sein. Ich erhalte einen anderen Fehler in jedem Test:
PHPUnit_Framework_Exception: Notice: Constant LARAVEL_START already defined in /.../.../autoload.php on line 3
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="bootstrap/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="true"
stopOnFailure="false"
syntaxCheck="false"
>
</phpunit>
Also meine Frage ist: wie könnte ich konfiguriere Laravel Tests mit processIsolation="true"
arbeiten oder sehen Sie eine andere Lösung für mein Problem?
Haben lösen Sie dieses Problem? –
Sie können diese Diskussion überprüfen: https://plus.google.com/107528973720672293459/posts/bBC5CdKPFQ4 für weitere Informationen. Grundsätzlich kann ich Laravel und PHPUnit nicht zusammen mit processIsolation konfigurieren, also setze ich max_connections in MySQL config auf 1000. Nicht sehr hübsch, aber das funktioniert. –