2013-10-17 58 views
3

我試圖功能測試HTTP狀態代碼的某個請求是200而不是500。我使用Symfony2中,這裏是代碼:無法斷言的HTTP狀態代碼是200不是500

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 \測試\功能\ JobControllerTest :: testIndex 無法斷言,500場比賽預計200

當我通過瀏覽器手動訪問路由「/」時,它工作得很好。

那麼這裏有什麼問題?

回答

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

+0

嗯,但什麼'div.text_exception> h1'? –

+0

@RafaelAdel xpath到消息本身。更新我的回答 –

+0

嗯,我已經試過了,但我什麼也沒有印回來。我認爲'if($ block-> count())'返回false。因爲我在'if'語句中放置了'$ this-> assertEquals(「dummy」,$ error)''。 –

0

您也可以在請求後回顯html,以查看回復內容。

echo $crawler->html(); 
相關問題