为什么Laravel中的示例测试无法重定向?

时间:2014-03-14 07:48:14

标签: laravel-4 phpunit eloquent

请解释为什么Laravel 4的示例测试失败了。

我的" /"路线重定向到"登录"在我的routes.php文件中。

(哦,我是RTFMed并搜索了几个网站,博客和内容。)

-sh-3.2$ phpunit
PHPUnit 4.0.7 by Sebastian Bergmann.

Configuration read from /home/dev/phpunit.xml

The Xdebug extension is not loaded. No code coverage will be generated.

F

Time: 83 ms, Memory: 13.50Mb

There was 1 failure:

1) ExampleTest::testBasicExample
Failed asserting that false is true.

/home/dev/app/tests/ExampleTest.php:14

FAILURES!                            
Tests: 1, Assertions: 1, Failures: 1.
-sh-3.2$ 

以下是ExampleTest.php的代码

<?php

class ExampleTest extends TestCase {

    /**
     * A basic functional test example.
     *
     * @return void
     */
    public function testBasicExample()
    {
        $crawler = $this->client->request('GET', '/');

        $this->assertTrue($this->client->getResponse()->isOk());
    }

}

1 个答案:

答案 0 :(得分:7)

测试失败,因为您获得302状态代码而不是200(因为重定向不在默认的routes.php文件中)。

如果你想测试重定向,那么Laravel只提供了几种方法。

  1. 如果您使用的是命名路线:

    $this->assertRedirectedToRoute('login');

  2. 如果不是:

    $this->assertRedirectedTo('login');

  3. 用于测试响应状态代码:

    $this->assertResponseStatus(302);