РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pplrSpTsAa 197 of 210 menu

Авторизация actingAs в тестах Laravel

Маршруты с middleware auth для гостя недоступны: будет редирект на логин. В тесте нельзя каждый раз заполнять форму входа. Нужен быстрый способ сказать: «этот запрос от пользователя».

Метод actingAs($user) подставляет пользователя в тест. Пользователя обычно создают фабрикой и сразу вызывают защищённый маршрут:

<?php namespace Tests\Feature; use App\Models\User; use Tests\TestCase; class DashboardTest extends TestCase { public function test_dashboard_for_user(): void { $user = User::factory()->create(); $response = $this->actingAs($user) ->get('/dashboard'); $response->assertStatus(200); } } ?>

Цепочку пишут так: $this->actingAs($user)->get(...). Без actingAs тот же get к закрытому URL часто даст 302 на вход. С actingAs - уже ответ авторизованного пользователя.

Фабрика User::factory()->create() здесь только подготовка: нужен живой пользователь в базе теста. Главное в уроке - сам actingAs: от чьего имени идёт запрос.

Создайте пользователя фабрикой и сделайте actingAs.

Откройте закрытый маршрут через get после actingAs.

Что будет с тем же get без actingAs?

Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить