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

mik*_*ike 1 phpunit eloquent laravel-4

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

我的"/"路由重定向到我的routes.php文件中的"login".

(哦,我是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$ 
Run Code Online (Sandbox Code Playgroud)

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

}
Run Code Online (Sandbox Code Playgroud)

kaj*_*ons 7

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

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

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

    $this->assertRedirectedToRoute('login');

  2. 如果不:

    $this->assertRedirectedTo('login');

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

    $this->assertResponseStatus(302);

  • 我怀疑你会得到更多答案,因为这是正确的答案. (2认同)