如何在Symfony2 WebTestCase中重定向后获取当前URL?

时间:2012-06-15 08:42:25

标签: testing symfony

使用Symfony2 WebTestCase,我有以下测试:

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

$crawler = $client->followRedirect();

我想在重定向结束/login之后测试新网址,但我找不到访问新网址的方法。

5 个答案:

答案 0 :(得分:33)

您可以使用$client->getResponse()->headers->get('location')获取当前网址,并使用assertRegExp() / login 结束。

$this->assertRegExp('/\/login$/', $client->getResponse()->headers->get('location'));

答案 1 :(得分:22)

刚试过Samy Dindane解决方案但没有成功(可能会从2.0改变)

无论如何,在2.1中,我能够通过以下方式检索测试中的当前URL:

$client->getRequest()->getUri()

然后,您可以使用assertRegexp()。

答案 2 :(得分:13)

你也可以这样做(Symfony 2.3)

$client->getHistory()->current()->getUri()

答案 3 :(得分:6)

您可以在$client->getResponse()->getTargetUrl()之前添加此行$client->followRedirect(),以获取您将被重定向的网址

答案 4 :(得分:0)

Test redirect from /sample to /target (can be absolute url as well)

&a==&b