Метод assertHeader
Метод assertHeader применяется к экземпляру TestResponse в тестах Laravel для проверки, что ответ содержит указанный заголовок с заданным значением. Первым параметром передаётся имя заголовка, вторым - ожидаемое значение. Если значение не передано, проверяется только наличие заголовка.
Синтаксис
<?php
$response->assertHeader($headerName, $value);
?>
Пример
Давайте проверим, что ответ содержит заголовок 'Content-Type' со значением 'application/json':
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ExampleTest extends TestCase
{
public function test_response_has_json_header()
{
$response = $this->json('GET', '/api/users');
$response->assertHeader('Content-Type', 'application/json');
}
}
?>
Пример
Проверим наличие заголовка без указания значения. Это полезно, когда точное значение неизвестно или динамическое:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ControllerTest extends TestCase
{
public function test_response_has_cache_control_header()
{
$response = $this->get('/page');
$response->assertHeader('Cache-Control');
}
}
?>
Пример
Проверим заголовок, который содержит несколько значений, например 'Content-Type' с кодировкой:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class FileTest extends TestCase
{
public function test_response_has_csv_content_type()
{
$response = $this->get('/export/csv');
$response->assertHeader(
'Content-Type',
'text/csv; charset=UTF-8'
);
}
}
?>
Пример
Проверим, что ответ не содержит определённый заголовок с помощью метода assertHeaderMissing. Этот метод удобен для проверки, что заголовок отсутствует в ответе:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class AuthTest extends TestCase
{
public function test_response_does_not_have_auth_header()
{
$response = $this->get('/public-page');
$response->assertHeaderMissing('Authorization');
}
}
?>
Пример
Использование метода assertHeader в цепочке с другими проверками ответа:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ApiTest extends TestCase
{
public function test_api_response_is_valid()
{
$response = $this->getJson('/api/posts');
$response
->assertStatus(200)
->assertHeader('Content-Type', 'application/json')
->assertJsonCount(10)
->assertJsonStructure([
'data' => [
'*' => ['id', 'title', 'content']
]
]);
}
}
?>
Смотрите также
-
метод
assertStatus,
который проверяет код состояния HTTP-ответа -
метод
assertCookie,
который проверяет наличие и значение cookie -
метод
withHeaders,
который устанавливает заголовки для запроса -
метод
assertJson,
который проверяет JSON-структуру ответа