Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Failed asserting the HTTP status code is 200 not 500

I'm trying to functional test the HTTP status code for a certain request is 200 not 500. I'm using Symfony2, and here's the code:

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());
}

And the result :

1) Ibw\JobeetBundle\Tests\Functional\JobControllerTest::testIndex Failed asserting that 500 matches expected 200.

When I access the route "/" manually through the browser it works just fine.

So what's wrong here ?

like image 933
Rafael Adel Avatar asked Jun 29 '26 09:06

Rafael Adel


1 Answers

The 500 error can be caused by anything in your case.

What you could do in such situation is to dump the content of the response and check the Symfony debugging message.

I usually use such code snippet for quick checking such errors directly in terminal:

if (!$response->isSuccessful()) {
    $block = $crawler->filter('div.text_exception > h1');
    if ($block->count()) {
        $error = $block->text();
    }
}

where div.text_exception > h1 is the xpath from Symfony2 debug page to the message itself

Then just print the $error

like image 54
Vitalii Zurian Avatar answered Jul 01 '26 00:07

Vitalii Zurian



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!