2013-10-17 4 views
3

특정 요청에 대한 HTTP 상태 코드의 기능 테스트를 시도하고 있습니다. 200이 아닌 500입니다. 나는 Symfony2를 사용하고 여기에 코드입니다 해요 :HTTP 상태 코드가 200이 아니라고 주장했습니다.

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 메시지 자체에 대한 경로입니다. 업데이트 내 대답 –

+0

흠 나는 그것을 시도했지만 다시 인쇄 아무것도. 나는'if ($ block-> count())'가 거짓을 리턴한다고 생각한다. 왜냐하면 나는'if' 문 안에'$ this-> assertEquals ("dummy", $ error)'를 넣었 기 때문이다. –

0

요청 후에 html을 표시하여 응답 내용을 확인할 수도 있습니다.

echo $crawler->html(); 
관련 문제