#laravel-5 #phpunit #voyager
#laravel-5 #phpunit #voyager
Вопрос:
Я пытаюсь написать несколько тестов для своей панели администратора, используя 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('AppUser')->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('AppUser')->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 создали необходимые записи в базе данных, которые предоставляют моему пользователю полный доступ, даже когда я умираю и сбрасываю разрешения, которые я получаю true, поэтому проблема не может быть в разрешениях, что-то еще идет не так, и я не знаю, что это, любая помощь была бы оценена.
Ответ №1:
Voyager напрямую запрашивает файл маршрута в web.php вызывающий метод Voyager::routes()
из-за этого laravel RouteServiceProvider
не знает о новом файле маршрута в случае тестовой среды. Итак, чтобы устранить эту проблему, я сделал это обходное решение.
Просто добавьте приведенный ниже код в setUp()
метод вашего тестового файла.
Route::prefix('admin')
->namespace('AppHttpControllers')
->group(base_path('vendor/tcg/voyager/routes/voyager.php'));