【问题标题】:Laravel voyager with phpunitLaravel 航海者与 phpunit
【发布时间】:2019-08-12 21:06:55
【问题描述】:

我正在尝试使用 laravel voyager 为我的管理面板编写一些测试,但是在进行一些研究时似乎存在一些问题,我发现问题可能与权限有关

 public function A_admin_user_can_visit_the_admin_page()
    {
        \DB::table('permissions')->insert(
            ['key' => 'browse_admin', 'id' => 1]
        );

        \DB::table('roles')->insert(
            ['name' => 'admin', 'display_name' => 'Administrator']
        );

        \DB::table('permission_role')->insert(
            ['permission_id' => 1, 'role_id' => 1]
        );

        $user = factory('App\User')->create(['role_id' => 1]);
        $this->actingAs($user);
        $this->get('/admin')->assertStatus(200);
    }

如果我有正确的权限,这个测试工作正常

    public function A_admin_can_browse_users_data()
    {
       $this->admin();
        $this->adminPermissions();
        $this->adminRoles();
        $user = factory('App\User')->create(['role_id' => 1]);
        $this->actingAs($user);
        $this->get('/admin')->assertStatus(200);
//      dd(\Voyager::canOrFail('browse_bread'));
        $this->get('/admin/users')->assertStatus(200);

    }

这里测试失败,但我保证功能 admin adminRoles 和 adminPermissions 已经创建了必要的数据库条目,即使我死了,我的用户也可以完全访问并转储我得到的权限,所以它不可能是权限是问题其他事情出了问题,我不知道有什么帮助,我们将不胜感激。

【问题讨论】:

    标签: laravel-5 phpunit voyager


    【解决方案1】:

    Voyager 在 web.php 调用方法Voyager::routes() 中直接需要路由文件,因为在测试环境中,laravel RouteServiceProvider 不知道新的路由文件。所以,为了解决这个问题,我做了这个解决方法。

    只需在测试文件的setUp() 方法中添加以下代码即可。

    Route::prefix('admin')
                ->namespace('App\Http\Controllers')
                ->group(base_path('vendor/tcg/voyager/routes/voyager.php'));
    

    【讨论】:

      猜你喜欢
      • 2020-06-04
      • 2020-04-26
      • 2021-06-25
      • 1970-01-01
      • 2021-10-08
      • 2017-08-29
      • 2021-08-07
      • 2020-06-23
      • 2019-03-05
      相关资源
      最近更新 更多