Не удалось подтвердить, что код состояния HTTP равен 200, а не 500


Я пытаюсь функционально протестировать код состояния 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\Тесты\Функциональные\jobcontrollertest::Тестиндекс Не удалось утверждать, что 500 совпадений ожидали 200.

Когда я получаю доступ к маршруту "/" вручную через браузер, он работает просто отлично.

Так что же здесь не так?

Author: pnuts, 2013-10-17

2 answers

Ошибка 500 может быть вызвана чем угодно в вашем случае.

Что вы могли бы сделать в такой ситуации, так это сбросить содержимое ответа и проверить сообщение об отладке Symfony.

Я обычно использую такой фрагмент кода для быстрой проверки таких ошибок непосредственно в терминале:

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

Где div.text_exception > h1 - это xpath от страницы отладки Symfony2 до самого сообщения

Затем просто распечатайте $error

 1
Author: Vitalii Zurian, 2014-01-06 15:55:22

Вы также можете повторить html-код после запроса, чтобы посмотреть, что содержится в ответе.

echo $crawler->html();
 0
Author: berbadger, 2017-06-22 12:02:14