【问题标题】:symfony 2 - request follow redirectsymfony 2 - 请求跟随重定向
【发布时间】:2017-01-24 20:39:59
【问题描述】:

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

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

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());
}

普通页面一切正常。

不过,仍有一些页面会进行重定向(一些旧文章会重定向到更新更好的版本 - 是动态的,以后可能会出现更多,因此不能单独处理)。

现在我刚刚添加了一个条件来跳过断言是否在这样的重定向上成功:

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());
   }
}

仍然...这是假设重定向后一切正常,因此测试与这些情况的相关性降低。我想跟随重定向,并检查那个页面是否成功。

有什么办法可以做到这一点?

【问题讨论】:

    标签: php symfony redirect phpunit


    【解决方案1】:

    如果发生重定向,您可以简单地跟随重定向如下:

    if ($client->getResponse()->isRedirection()) {
        $client->followRedirect();
    }
    $this->assertTrue($client->getResponse()->isSuccessful());
    

    似乎可以告诉客户端使用该方法自行跟随重定向:

    $client->followRedirects(true);
    $client->setMaxRedirects(10);
    

    所以客户端自己跟随重定向(但我从来没有尝试过:))

    希望有帮助

    【讨论】:

    • 刚刚关闭了我的机器 :)。我明天试试,如果可行,投票+接受。
    • 嗨@zozo 别担心,慢慢来:)
    • 第一个解决方案有效。第二个有一个小错误(不是 $this->client 是 $client)。修复后它不会出现错误但仍然无法正常工作(可能需要更多调整)。仍然......第一个成功了:)。
    猜你喜欢
    • 2016-08-30
    • 2015-12-09
    • 2015-06-24
    • 2021-08-27
    • 2017-09-10
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 2012-01-05
    相关资源
    最近更新 更多