我正在尝试对某个请求的HTTP状态代码进行功能测试200
而不是500
。我正在使用Symfony2,这是代码:
public function testIndex()
{
$client = static::createClient();
$crawler = $client->request('GET', "/");
$this->assertEquals('Ibw\JobeetBundle\Controller\JobController::indexAction', $client->getRequest()->attributes->get('_controller'));
$this->assertEquals(200 , $client->getResponse()->getStatusCode());
$this->assertEquals(0, $crawler->filter('.jobs td.position:contains("Expired")')->count());
}
结果:
1)Ibw \ JobeetBundle \ Tests \ Functional \ JobControllerTest :: testIndex 无法断言500场比赛预计为200。
当我通过浏览器手动访问路径“/”时,它工作得很好。
那么这里有什么问题?
答案 0 :(得分:1)
您的案例中的任何内容都可能导致500错误。
在这种情况下你可以做的是转储响应的内容并检查Symfony调试消息。
我通常使用此类代码段直接在终端中快速检查此类错误:
if (!$response->isSuccessful()) {
$block = $crawler->filter('div.text_exception > h1');
if ($block->count()) {
$error = $block->text();
}
}
其中div.text_exception > h1
是从Symfony2调试页面到消息本身的xpath
然后只需打印$error
答案 1 :(得分:0)
您也可以在请求后回显html以查看响应中的内容。
echo $crawler->html();