Symfony2 WebTestCaseを使用して、次のテストを行います。
$client->request('GET', '/');
$this->assertTrue($client->getResponse() instanceof RedirectResponse);
$crawler = $client->followRedirect();
リダイレクトがで終了した後、新しいURLをテストしたいのですが/login
、新しいURLにアクセスする方法が見つかりません。
を使用して現在のURLを取得し、を使用して/login$client->getResponse()->headers->get('location')
で終了することを表明できます。assertRegExp()
$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()
リダイレクトされるURLを取得する$client->getResponse()->getTargetUrl()
前に、この行を追加できます$client->followRedirect()
/sampleから/targetへのリダイレクトをテストします(絶対URLにすることもできます)
$crawler = $client->request('GET', '/sample');
$this->assertTrue($client->getResponse() instanceof RedirectResponse);
$this->assertTrue($client->getResponse()->isRedirect('/target'));