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

Метод actingAs

Метод actingAs применяется к экземпляру тестового клиента и позволяет указать пользователя, от имени которого будут выполняться запросы. Первым параметром передаётся модель пользователя, вторым - необязательный параметр с именем guard. Метод возвращает тот же экземпляр клиента для цепочки вызовов.

Синтаксис

<?php $this->actingAs($user, $guard); ?>

Пример

Давайте протестируем доступ к защищённому маршруту для аутентифицированного пользователя:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; class DashboardTest extends TestCase { use RefreshDatabase; public function test_authenticated_user_can_access_dashboard() { $user = User::factory()->create(); $res = $this ->actingAs($user) ->get('/dashboard'); $res->assertOk(); } } ?>

Пример

Давайте проверим, что неаутентифицированный пользователь перенаправляется на страницу входа:

<?php namespace Tests\Feature; use Tests\TestCase; use Illuminate\Foundation\Testing\RefreshDatabase; class DashboardTest extends TestCase { use RefreshDatabase; public function test_guest_cannot_access_dashboard() { $res = $this->get('/dashboard'); $res->assertRedirect('/login'); } } ?>

Пример

Давайте протестируем доступ к маршруту администратора с использованием конкретного guard:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Admin; use Illuminate\Foundation\Testing\RefreshDatabase; class AdminTest extends TestCase { use RefreshDatabase; public function test_admin_can_access_admin_panel() { $admin = Admin::factory()->create(); $res = $this ->actingAs($admin, 'admin') ->get('/admin/dashboard'); $res->assertOk(); } } ?>

Пример

Давайте проверим, что метод actingAs сохраняет сессию между запросами в одном тесте:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; class ProfileTest extends TestCase { use RefreshDatabase; public function test_user_can_view_and_update_profile() { $user = User::factory()->create([ 'name' => 'John Doe' ]); $this->actingAs($user); $res1 = $this->get('/profile'); $res1->assertSee('John Doe'); $res2 = $this->put('/profile', [ 'name' => 'Jane Doe' ]); $res2->assertRedirect('/profile'); $res3 = $this->get('/profile'); $res3->assertSee('Jane Doe'); } } ?>

Пример

Давайте проверим, что метод actingAs работает с фабрикой моделей для создания пользователей:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; use App\Models\Post; use Illuminate\Foundation\Testing\RefreshDatabase; class PostTest extends TestCase { use RefreshDatabase; public function test_user_can_create_post() { $user = User::factory()->create(); $res = $this ->actingAs($user) ->post('/posts', [ 'title' => 'Test Post', 'content' => 'This is a test post content.' ]); $res->assertCreated(); $this->assertDatabaseHas('posts', [ 'title' => 'Test Post', 'user_id' => $user->id ]); } } ?>

Смотрите также

  • класс TestCase,
    который предоставляет методы для тестирования
  • метод get,
    который выполняет GET-запрос в тестах
  • метод post,
    который выполняет POST-запрос в тестах
  • метод assertAuthenticated,
    который проверяет аутентификацию пользователя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить