Laravel 4 为什么Laravel中的示例测试会因重定向而失败?

Laravel 4 为什么Laravel中的示例测试会因重定向而失败?,laravel-4,phpunit,eloquent,Laravel 4,Phpunit,Eloquent,请为我解释一下为什么Laravel 4的示例测试失败 我的“/”路由重定向到My routes.php文件中的“login” (哦,我已经浏览了好几个网站、博客和教程。) 下面是ExampleTest.php中的代码 <?php class ExampleTest extends TestCase { /** * A basic functional test example. * * @return void */ public

请为我解释一下为什么Laravel 4的示例测试失败

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

(哦,我已经浏览了好几个网站、博客和教程。)

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

}

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

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

  • 如果您使用的是命名路由:

    $this->AssertRedirectedToRute('login')

  • 如果没有:

    $this->assertRedirectedTo('login')

  • 对于测试响应状态代码:

    $this->assertResponseStatus(302)


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

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

  • 如果您使用的是命名路由:

    $this->AssertRedirectedToRute('login')

  • 如果没有:

    $this->assertRedirectedTo('login')

  • 对于测试响应状态代码:

    $this->assertResponseStatus(302)


  • 如果没有测试代码,很难告诉您:将标题更改为重定向失败如果没有测试代码,很难告诉您:将标题更改为重定向失败谢谢。这是了解兔子踪迹的一个良好开端。在我标记一个最佳答案之前,我将关注更多的答案。我怀疑你是否会得到更多的答案,因为这是正确的答案。但是,这个答案没有解释重定向发生的原因(至少我无法理解)。我希望与routes.php文件有关,但不清楚其中的确切含义。也就是说,这意味着什么“因为存在默认routes.php中没有的重定向”。他怎么知道有一个重定向?在代码中哪里可以看到这种重定向?一个人怎么能禁用它呢?顺便说一句,我并没有故意否决这个答案,现在它不会让我改变我的投票:(@geoidesic我本来可以把它写得更好。OP修改了
    路由。php
    和默认路由(
    /
    )正在重定向到其他位置,而不是显示视图。测试未更新以反映更改,因此失败。谢谢。这是了解此兔子踪迹的良好开端。在我标记最佳答案之前,将观察更多答案。我怀疑您是否会获得更多答案,因为这是正确的答案。此答案无法解释原因e重定向正在发生(至少我无法理解)。我希望与routes.php文件有关,如前所述,但不清楚它到底是什么意思。例如,它意味着什么?–“因为有一个重定向不在默认routes.php中”。他怎么知道有重定向?在代码中哪里可以看到重定向?怎么可以禁用它?顺便说一句,我并没有故意否决这个答案,现在它不会让我改变我的投票:(@geoidesic我可以用更好的措辞。OP修改了
    路由。php
    和默认路由(
    //code>)正在重定向到其他位置而不是显示视图。测试未更新以反映更改,因此失败。
    
    <?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());
        }
    
    }