Не удалось подтвердить, что код состояния 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.
Когда я получаю доступ к маршруту "/" вручную через браузер, он работает просто отлично.
Так что же здесь не так?
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
Вы также можете повторить html-код после запроса, чтобы посмотреть, что содержится в ответе.
echo $crawler->html();