Метод getJson
Метод getJson применяется в тестовых классах Laravel
для выполнения GET-запросов к защищённым маршрутам с установкой
заголовка Accept: application/json. Первым параметром
передаётся URL маршрута, вторым - массив данных запроса,
третьим - дополнительные заголовки. Метод возвращает объект
ответа, который можно использовать для последующих проверок.
Синтаксис
<?php
$this->getJson($uri, $data = [], $headers = []);
?>
Пример
Давайте отправим GET-запрос к маршруту '/api/users'
и проверим, что ответ содержит список пользователей:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class UserTest extends TestCase
{
public function test_get_users_list()
{
$res = $this->getJson('/api/users');
$res->assertStatus(200)
->assertJsonStructure([
'data' => [
'*' => ['id', 'name', 'email']
]
]);
}
}
?>
Пример
Давайте отправим GET-запрос с параметрами фильтрации и проверим содержимое JSON-ответа:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ArticleTest extends TestCase
{
public function test_filter_articles()
{
$res = $this->getJson('/api/articles', [
'status' => 'published',
'limit' => 5
]);
$res->assertOk()
->assertJsonCount(5, 'data')
->assertJsonPath('data.0.status', 'published');
}
}
?>
Результат выполнения кода:
"Test passed: JSON response valid"
Пример
Давайте отправим запрос с дополнительными заголовками и проверим, что возвращается ошибка авторизации:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ApiTest extends TestCase
{
public function test_unauthorized_access()
{
$res = $this->getJson('/api/admin/users', [], [
'X-API-Key' => 'invalid-key'
]);
$res->assertStatus(401)
->assertJson([
'error' => 'Unauthorized'
]);
}
}
?>
Результат выполнения кода:
"Test passed: 401 Unauthorized response received"
Смотрите также
-
метод
get,
который выполняет обычный GET-запрос без установки JSON-заголовка -
метод
postJson,
который отправляет POST-запрос с JSON-данными -
метод
json,
который отправляет запрос с JSON-данными и ожидает JSON-ответ -
метод
assertJson,
который проверяет наличие определённых данных в JSON-ответе