Laravel PHPUnit测试,与seePageIs()的奇怪行为

时间:2016-02-23 10:40:47

标签: unit-testing laravel phpunit

尝试着手测试。我有一个相当简单的测试,以确保用户在进入根页面时被踢登录:

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],

这可以到最后一行,它似乎不是检查当前路径,测试本身正在尝试重定向,因为我得到运行phpunit的错误:

public function index_without_auth_should_redirect_to_login()
    {
        $response = $this->get('/');
        $response->seeStatusCode(302);
        $response->seePageIs('/login');
    }

我需要检查网址吗?

1 个答案:

答案 0 :(得分:3)

您在技术上还没有登录页面,因为您没有按照重定向进行操作。你获得的例外是完全有效的。 seePageIs()方法asserts if page is loaded。它expects 200响应(而你有302)。

您需要先关注重定向,或验证Location标头,看看您是否被重定向到登录页面。

您可以使用具有MakesHttpRequests特征的assertRedirectedTo() or assertRedirectedToRoute()个断言之一:

$this->get('/')
$this->seeStatusCode(302);
$this->assertRedirectedTo('http://localhost/login');