Подтвердить что ты не робот

Как получить текущий URL-адрес после перенаправления в Symfony2 WebTestCase?

Используя Symfony2 WebTestCase, у меня есть следующий тест:

$client->request('GET', '/');
$this->assertTrue($client->getResponse() instanceof RedirectResponse);

$crawler = $client->followRedirect();

Я бы хотел протестировать новый url, после перенаправления с /login, но я не нашел способа получить доступ к новому URL-адресу.

4b9b3361

Ответ 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'));