Как получить текущий URL-адрес после перенаправления в Symfony2 WebTestCase?
Используя Symfony2 WebTestCase, у меня есть следующий тест:
$client->request('GET', '/');
$this->assertTrue($client->getResponse() instanceof RedirectResponse);
$crawler = $client->followRedirect();
Я бы хотел протестировать новый url, после перенаправления с /login
, но я не нашел способа получить доступ к новому URL-адресу.
Ответы
Ответ 1
Вы можете получить текущий URL-адрес с помощью $client->getResponse()->headers->get('location')
и утвердить его с помощью /login с помощью assertRegExp()
.
$this->assertRegExp('/\/login$/', $client->getResponse()->headers->get('location'));
Ответ 2
Просто попробовал решение Samy Dindane без успеха (возможно, что-то изменилось с 2.0)
В любом случае, в 2.1, я смог получить текущий URL-адрес в тесте с помощью:
$client->getRequest()->getUri()
Затем вы можете использовать assertRegexp().
Ответ 3
Вы также можете сделать что-то вроде этого (Symfony 2.3)
$client->getHistory()->current()->getUri()
Ответ 4
Вы можете добавить эту строку $client->getResponse()->getTargetUrl()
до $client->followRedirect()
, чтобы получить URL-адрес, где вы будете перенаправлены
Ответ 5
Проверить перенаправление с /sample на/target (также может быть абсолютным URL-адресом)
$crawler = $client->request('GET', '/sample');
$this->assertTrue($client->getResponse() instanceof RedirectResponse);
$this->assertTrue($client->getResponse()->isRedirect('/target'));