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

Метод withHeaders

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

Синтаксис

<?php $this->withHeaders($headers)->get($uri); ?>

Пример

Давайте отправим GET-запрос с кастомным заголовком X-Requested-With для имитации AJAX-запроса:

<?php namespace Tests\Feature; use Tests\TestCase; class ExampleTest extends TestCase { public function test_ajax_request() { $headers = [ 'X-Requested-With' => 'XMLHttpRequest', ]; $res = $this->withHeaders($headers) ->get('/api/users'); $res->assertOk(); } } ?>

Пример

Отправим запрос с Bearer-токеном для аутентификации через API:

<?php namespace Tests\Feature; use Tests\TestCase; class ApiTest extends TestCase { public function test_authenticated_request() { $token = 'your-secret-api-token'; $headers = [ 'Authorization' => 'Bearer ' . $token, 'Accept' => 'application/json', ]; $res = $this->withHeaders($headers) ->get('/api/protected-data'); $res->assertStatus(200); $res->assertJson(['status' => 'success']); } } ?>

Пример

Отправим POST-запрос с указанием типа содержимого и кастомным заголовком:

<?php namespace Tests\Feature; use Tests\TestCase; class PostTest extends TestCase { public function test_post_with_custom_headers() { $headers = [ 'Content-Type' => 'application/xml', 'X-API-Key' => 'abc123xyz', ]; $data = '<?xml version="1.0" encoding="UTF-8"?> <user> <name>John Doe</name> <email>john@example.com</email> </user>'; $res = $this->withHeaders($headers) ->post('/api/users', $data); $res->assertCreated(); $res->assertHeader('Content-Type', 'application/json'); } } ?>

Пример

Отправим запрос с несколькими заголовками, включая параметры локализации:

<?php namespace Tests\Feature; use Tests\TestCase; class LocalizationTest extends TestCase { public function test_request_with_locale_header() { $headers = [ 'Accept-Language' => 'ru', 'X-Timezone' => 'Europe/Moscow', 'User-Agent' => 'Laravel-Test/1.0', ]; $res = $this->withHeaders($headers) ->get('/api/articles'); $res->assertOk(); $content = $res->json(); $res->assertJsonPath('locale', 'ru'); } } ?>

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

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