2016-04-06 3 views
2

Ich habe eine einfache PHPUnit/Symfony WebTestCase eingerichtet, um das Login-Formular unserer Website zu testen.PHPUnit + Symfony: Crawler Folgen Redirects Ursachen SegFault

$form = $crawler->filter("#register")->form(); 

// set form values 

$crawler = $this->client->submit($form); 

wird ein Formular an /register, einreichen und dann zu /registered auf Erfolg (und 200/OK zurück zu /register auf Fehler) umleiten.

Wenn ich entweder $this->client->followRedirects(); vor Block oben oder $this->client->followRedirect(); nach dem Senden verwende, bekomme ich einen segfault. Es gibt wirklich keinen Hinweis darauf, wo der Segfault stattfindet.

Etwas anderes zu beachten: wenn ich JUST die Tests in dieser Tests Elternklasse (2 Tests) laufen, d. H. Mit --filter [THE CLASS] läuft es gut. Wenn ich versuche, diesen Test zusammen mit der vollständigen Suite (~ 15 Tests) auszuführen, erhalte ich den Segfault.

Ich habe versucht, phpunit mehr Speicher mit der -d Flagge geben, aber das hilft nicht wirklich.

Antwort

2

Das Problem kann in Controller-Arbeit in Verbindung mit anderen Komponenten sein.

Ich empfehle Ihnen, die Process Isolation in PHPUnit zu verwenden, so dass Sie den kritischen Test in einem separaten PHP-Prozess ausführen können. Als Beispiel können Sie die folgenden Anmerkungen verwenden:

Indicates that all tests in a test class should be run in a separate PHP process:

/** 
* @runTestsInSeparateProcesses 
*/ 
class MyTest extends PHPUnit_Framework_TestCase 
{ 
    // ... 
} 

Indicates that a test should be run in a separate PHP process:

class MyTest extends PHPUnit_Framework_TestCase 
{ 
    /** 
    * @runInSeparateProcess 
    */ 
    public function testInSeparateProcess() 
    { 
     // ... 
    } 
} 

Hope this Hilfe

+0

Cooler Dank, werde ich gehen geben. –

+0

Sieht aus wie es funktioniert hat, danke! –

+0

nette eins. habe den seg fault auch für mich gelöst :) danke dafür :) – Sharpy35