symfony 2-请求跟随重定向

zoz*_*ozo 4 php redirect phpunit symfony

我正在编写一些测试来检查站点中的所有页面是否都正常。

相关的基本代码是这样的:

function pagesUpTest() {
   static::bootKernel($options);

   $client = static::$kernel->getContainer()->get('test.client');
   $client->setServerParameters($server);

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

   $this->assertTrue($client->getResponse()->isSuccessful());
}
Run Code Online (Sandbox Code Playgroud)

正常页面一切正常。

仍然有一些页面进行重定向(一些旧文章将其重定向到较新的和更好的版本-是动态的,以后会出现更多,因此不能分开对待)。

现在,我只是添加了一个条件,以跳过断言在重定向成功是否这样的情况:

function pagesUpTest() {
   static::bootKernel($options);

   $client = static::$kernel->getContainer()->get('test.client');
   $client->setServerParameters($server);

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

   if (!$client->getResponse()->isRedirection()) {
      $this->assertTrue($client->getResponse()->isSuccessful());
   }
}
Run Code Online (Sandbox Code Playgroud)

仍然...这是假设重定向后一切正常,因此测试对于这些情况的重要性降低。我要遵循重定向,并检查该页面是否成功。

有什么办法可以做到吗?

Mat*_*teo 5

您可以简单地按照重定向进行重定向,如下所示:

if ($client->getResponse()->isRedirection()) {
    $client->followRedirect();
}
$this->assertTrue($client->getResponse()->isSuccessful());
Run Code Online (Sandbox Code Playgroud)

似乎有可能告诉客户端使用以下方法自己执行重定向:

$client->followRedirects(true);
$client->setMaxRedirects(10);
Run Code Online (Sandbox Code Playgroud)

因此,客户端自己遵循重定向(但是我从不尝试:)

希望有帮助