Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel测试-未授权异常:用户没有正确的角色_Php_Laravel_Spatie_Laravel Testing - Fatal编程技术网

Php Laravel测试-未授权异常:用户没有正确的角色

Php Laravel测试-未授权异常:用户没有正确的角色,php,laravel,spatie,laravel-testing,Php,Laravel,Spatie,Laravel Testing,所以我正在使用laravel测试,我正在为访问用户页面进行测试,在那里我可以看到所有用户并编辑他们。在userscoontroller.php中,我已经声明只有管理员才能访问用户页面。我在Spatiale插件中使用的角色和权限。我做了这个测试来检查一个简单的用户是否可以访问用户的页面,下面是UserTest.php /** @test */ public function user_try_to_access_users_page() { $user = factory(User::cl

所以我正在使用laravel测试,我正在为访问用户页面进行测试,在那里我可以看到所有用户并编辑他们。在
userscoontroller.php
中,我已经声明只有管理员才能访问用户页面。我在Spatiale插件中使用的角色和权限。我做了这个测试来检查一个简单的用户是否可以访问用户的页面,下面是
UserTest.php

/** @test */
public function user_try_to_access_users_page()
{
    $user = factory(User::class)->create();
    $user->assignRole('user');
    $this->actingAs($user);

    $response = $this->get('/users');
    $response->assertStatus(403);
}
下面是
userscoontroller.php
thas中的代码,它只允许管理员访问

public function index()
{
    $testUser = Auth::user();

    if ($testUser->hasRole('admin')) 
    {   
        $users = User::all();

        return view('users.index', ['users' => $users]);
    }

    return response(view('errors.403'), 403);
}
现在,当我尝试运行测试时,它会给我错误

测试\功能\用户测试::用户\u尝试\u访问\u用户\u页面 空间\权限\异常\未授权异常:用户没有正确的角色

在这一行中,
$response=$this->get('/users')

这很好,因为它不允许用户访问页面,但应该给出代码403,而不是错误。
感谢您抽出时间。

检查路由是否正在使用角色中间件。在路由中,我只使用auth中间件来检查用户是否登录,但在userscocontroller.php构造函数中,我声明了$this->middleware(['role:admin']);那可能就行了。从构造函数中删除它,然后再试一次。@aynber好吧,这比我想象的要容易!谢谢你,祝你今天愉快