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

Метод withSession

Метод withSession применяется к HTTP-клиенту в тестах Laravel и позволяет установить произвольные данные в сессию перед отправкой запроса. Метод принимает ассоциативный массив, где ключи - это имена переменных сессии, а значения - их содержимое. Данный метод часто используется для тестирования функциональности, зависящей от состояния сессии, например, корзины покупок, flash-сообщений или аутентификации.

Синтаксис

<?php $this->withSession($data)->get($uri); ?>

Пример

Давайте протестируем страницу профиля, которая требует наличия определенного ключа в сессии:

<?php namespace Tests\Feature; use Tests\TestCase; class ProfileTest extends TestCase { public function test_profile_page_requires_session_data() { $sessionData = ['user_id' => 1, 'role' => 'admin']; $res = $this->withSession($sessionData) ->get('/profile'); $res->assertStatus(200); } } ?>

Пример

Теперь установим несколько значений сессии для тестирования корзины покупок:

<?php namespace Tests\Feature; use Tests\TestCase; class CartTest extends TestCase { public function test_cart_page_displays_correct_items() { $cartItems = [ 'cart' => [ ['id' => 1, 'name' => 'Product A', 'price' => 100], ['id' => 2, 'name' => 'Product B', 'price' => 200], ], 'total' => 300, ]; $res = $this->withSession($cartItems) ->get('/cart'); $res->assertSee('Product A'); $res->assertSee('Product B'); $res->assertSee('$300.00'); } } ?>

Пример

Также можно использовать withSession для эмуляции flash-сообщений, которые обычно хранятся в сессии:

<?php namespace Tests\Feature; use Tests\TestCase; class FlashMessageTest extends TestCase { public function test_flash_message_is_displayed_on_page() { $flashData = [ '_flash' => [ 'old' => [], 'new' => ['message' => 'Profile updated successfully'], ], 'message' => 'Profile updated successfully', ]; $res = $this->withSession($flashData) ->get('/dashboard'); $res->assertSee('Profile updated successfully'); } } ?>

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

  • метод actingAs,
    который устанавливает аутентифицированного пользователя
  • метод withHeaders,
    который добавляет заголовки к запросу
  • метод withoutMiddleware,
    который отключает middleware для тестирования
  • метод assertSessionHas,
    который проверяет наличие данных в сессии
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить