使用 Symfony2 WebTestCase,我有以下测试:
$client->request('GET', '/');
$this->assertTrue($client->getResponse() instanceof RedirectResponse);
$crawler = $client->followRedirect();
我想在重定向结束后测试新的 URL,/login
但我没有找到访问新 URL 的方法。
您可以使用 获取当前 URL ,并使用$client->getResponse()->headers->get('location')
断言它以/loginassertRegExp()
结尾。
$this->assertRegExp('/\/login$/', $client->getResponse()->headers->get('location'));
刚刚尝试了 Samy Dindane 解决方案但没有成功(也许从 2.0 开始有所改变)
无论如何,在 2.1 中,我能够在测试中检索当前 URL:
$client->getRequest()->getUri()
然后,您可以使用 assertRegexp()。
你也可以这样做(Symfony 2.3)
$client->getHistory()->current()->getUri()
$client->getResponse()->getTargetUrl()
您可以在之前添加此行$client->followRedirect()
以获取您将被重定向的 url
测试从 /sample 到 /target 的重定向(也可以是绝对 url)
$crawler = $client->request('GET', '/sample');
$this->assertTrue($client->getResponse() instanceof RedirectResponse);
$this->assertTrue($client->getResponse()->isRedirect('/target'));