38

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

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

$crawler = $client->followRedirect();

我想在重定向结束后测试新的 URL,/login但我没有找到访问新 URL 的方法。

4

5 回答 5

35

您可以使用 获取当前 URL ,并使用$client->getResponse()->headers->get('location')断言它以/loginassertRegExp()结尾。

$this->assertRegExp('/\/login$/', $client->getResponse()->headers->get('location'));
于 2012-06-15T09:15:04.670 回答
26

刚刚尝试了 Samy Dindane 解决方案但没有成功(也许从 2.0 开始有所改变)

无论如何,在 2.1 中,我能够在测试中检索当前 URL:

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

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

于 2012-10-22T09:34:50.437 回答
14

你也可以这样做(Symfony 2.3)

$client->getHistory()->current()->getUri()
于 2013-07-16T11:27:35.353 回答
8

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

于 2016-03-22T20:33:29.933 回答
1

测试从 /sample 到 /target 的重定向(也可以是绝对 url)

$crawler = $client->request('GET', '/sample');

$this->assertTrue($client->getResponse() instanceof RedirectResponse);
$this->assertTrue($client->getResponse()->isRedirect('/target'));
于 2017-08-30T20:48:33.703 回答