【问题标题】:Redirect test won't pass after click on a link单击链接后重定向测试不会通过
【发布时间】:2016-06-22 15:02:44
【问题描述】:

我正在用 PHPUnit 为 Symfony 编写一些虚拟测试,以便更多地了解 PHP 中的功能测试。

这就是问题所在。 这是我的测试方法:

//Redirecting test by clicking on href
public function testRedirect() {
    $client = static::createClient();
    $crawler = $client->request('GET', '/redirect');

    $link = $crawler->selectLink('Click me !')->link();
    $client->click($link);

    $crawler2 = $client->followRedirect();
    $this->assertTrue(
            $client->getResponse()->isRedirect()
    );
    $this->assertTrue($crawler2->filter('html:contains("Haha, you\'ve been redirect !")')->count() > 0);
}

这是我的链接:

<a href="{{ path('redirect2') }}">Click me !</a>

以及目的地的消息:

Haha, you've been redirect !

我认为

redirect2

是我的路线名称。

测试给了我:

1) AppBundle\Tests\Controller\DefaultControllerTest::testRedirect
LogicException: The request was not redirected.

所以我的问题是:href 是否被视为重定向?

提前致谢! 最远的,

【问题讨论】:

    标签: php symfony redirect routes phpunit


    【解决方案1】:

    当您跟随重定向时,您已经在“下一个”页面上。只需在断言后移动$crawler2 = $client-&gt;followRedirect(); 行

    【讨论】:

    • 您好,感谢您的回答。我已经尝试过您的解决方案,但收到了以下消息:“1) AppBundle\Tests\Controller\DefaultControllerTest::testRedirect 失败,断言 false 为真。”这是否意味着它没有被重定向?谢谢,
    • 是的,它没有被重定向。顺便说一句,点击后获得重定向并不常见,除非您在点击后进入的页面发出重定向响应(并非不可能,但不太可能)
    • 感谢您的解释。为了测试“$client->followRedirect();”我可以做什么样的测试?
    • 典型的测试是在表单提交之后,因为通常在创建新记录(或编辑现有记录)之后会有重定向。
    猜你喜欢
    • 2013-04-10
    • 1970-01-01
    • 2012-03-26
    • 2022-08-18
    • 2011-07-06
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    相关资源
    最近更新 更多