Метод json
Метод json применяется в тестовых классах Laravel для эмуляции отправки JSON-запросов к вашему приложению. Первым параметром передаётся HTTP-метод (например, 'GET', 'POST', 'PUT', 'DELETE'), вторым - URI запроса, третьим - массив данных, которые будут преобразованы в JSON и отправлены в теле запроса. Метод возвращает экземпляр TestResponse, который позволяет выполнять различные проверки.
Синтаксис
<?php
$this->json($method, $uri, $data);
?>
Пример
Давайте отправим POST-запрос на создание новой статьи с данными в формате JSON:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Article;
class ArticleTest extends TestCase
{
public function test_store_article()
{
$data = [
'title' => 'article',
'content' => 'text',
];
$response = $this->json('POST', '/api/articles', $data);
$response->assertStatus(201);
$this->assertDatabaseHas('articles', $data);
}
}
?>
Результат выполнения кода:
"Test passed"
Пример
Отправим GET-запрос с параметрами в JSON-формате для получения отфильтрованных статей:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Article;
class ArticleTest extends TestCase
{
public function test_filter_articles()
{
$filters = [
'status' => 'published',
'limit' => 5,
];
$response = $this->json('GET', '/api/articles', $filters);
$response->assertOk();
$response->assertJsonCount(5, 'data');
}
}
?>
Результат выполнения кода:
"Test passed"
Пример
Отправим PUT-запрос для обновления статьи с идентификатором 1:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Article;
class ArticleTest extends TestCase
{
public function test_update_article()
{
$article = Article::factory()->create();
$updatedData = [
'title' => 'updated article',
'content' => 'updated text',
];
$response = $this->json('PUT', "/api/articles/{$article->id}", $updatedData);
$response->assertOk();
$this->assertDatabaseHas('articles', $updatedData);
}
}
?>
Результат выполнения кода:
"Test passed"
Смотрите также
-
метод
getJson,
который отправляет GET-запрос с JSON-ожиданием -
метод
postJson,
который отправляет POST-запрос с JSON-ожиданием -
метод
assertJson,
который проверяет JSON-ответ на соответствие фрагменту -
метод
assertJsonPath,
который проверяет значение в JSON по указанному пути