38

Symfony2 WebTestCaseを使用して、次のテストを行います。

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

$crawler = $client->followRedirect();

リダイレクトがで終了した後、新しいURLをテストしたいのですが/login、新しいURLにアクセスする方法が見つかりません。

4

5 に答える 5

35

を使用して現在のURLを取得し、を使用して/login$client->getResponse()->headers->get('location')で終了することを表明できます。assertRegExp()

$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

リダイレクトされるURLを取得する$client->getResponse()->getTargetUrl()前に、この行を追加できます$client->followRedirect()

于 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 に答える