如何为Laravel功能测试验证用户身份?

时间:2018-07-24 15:21:31

标签: laravel testing laravel-5.5

我正在尝试测试经过身份验证的管理器是否将重定向到仪表板。 (当经理已经通过身份验证并进入登录页面时,他将被重定向到仪表板)

public function testIfBackendIsLoggingAuthenticatedUser()
{
    $manager = \App\Manager::where('email', 'test@email.com')->first();
    Auth::attempt(['email' => $manager->email, 'password' => $manager->password]);

    $response = $this->actingAs($manager)
        ->get(route('backend.login.show'))
        ->assertRedirect(route('backend.dashboard.index'));
}

但是我得到了结果

Response status code [200] is not a redirect status code.
Failed asserting that false is true.

如何进行身份验证测试?

2 个答案:

答案 0 :(得分:0)

尝试方法对密码本身进行哈希处理。您正在传递哈希密码,因此它对密码进行了两次哈希运算,因此不正确。

使用:

Auth::login($manager);

代替:

Auth::attempt(['email' => $manager->email, 'password' => $manager->password]);

答案 1 :(得分:0)

对不起,伙计们。真正的错误是我忘了提到后卫。所以工作代码是

$response = $this->actingAs($manager, 'manager')
        ->get(route('backend.login.show'))
        ->assertRedirect(route('backend.dashboard.index'));