我设置了一个简单的PHPUnit/Symfony WebTestCase来测试我们网站的登录表单。
$form = $crawler->filter("#register")->form();
// set form values
$crawler = $this->client->submit($form);
表单将提交给/register
,然后在成功时重定向到/registered
(在失败时200/OK返回到/register
)。
如果我在上面的块之前使用$this->client->followRedirects();
,或者在提交之后使用$this->client->followRedirect();
,我会得到一个segfault。确实没有迹象表明segfault发生在哪里。
还有一点需要注意:如果我只运行这个测试父类中的测试(2个测试),即使用--filter [THE CLASS]
,它运行得很好。如果我试着运行这个测试,以及整个套件(大约15个测试),我会得到segfault。
我尝试过使用-d
标志为phpunit提供更多内存,但这并没有真正的帮助。
问题可能是控制器与其他组件协同工作。
我建议您在PHPUnit中使用进程隔离,这样您就可以在单独的PHP进程中运行关键测试。例如,您可以使用以下注释:
指示测试类中的所有测试都应该在单独的PHP进程中运行:
/**
* @runTestsInSeparateProcesses
*/
class MyTest extends PHPUnit_Framework_TestCase
{
// ...
}
指示测试应该在单独的PHP进程中运行:
class MyTest extends PHPUnit_Framework_TestCase
{
/**
* @runInSeparateProcess
*/
public function testInSeparateProcess()
{
// ...
}
}
希望这能帮助