Метод assertJsonMissing
Метод assertJsonMissing предназначен для тестирования JSON-ответов
в Laravel. Он проверяет, что ответ не содержит указанные данные.
Метод применяется к экземпляру TestResponse, который возвращается
при выполнении запросов через get, post,
put, delete и другие HTTP-методы.
Первым параметром передаётся массив или строка с ключами и значениями,
которые не должны присутствовать в JSON-ответе.
Метод полезен для проверки, что определённые данные были удалены
или не отображаются в ответе по условию.
Синтаксис
<?php
$this->get($uri)->assertJsonMissing($data);
?>
Пример
Давайте проверим, что ответ не содержит пользователя
с идентификатором 1:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class UserControllerTest extends TestCase
{
public function test_user_is_missing_from_response()
{
$res = $this->get('/api/users');
$res->assertJsonMissing(['id' => 1]);
}
}
?>
Результат выполнения кода:
true
Пример
Проверим, что в ответе отсутствует фрагмент с определёнными данными:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ArticleControllerTest extends TestCase
{
public function test_article_is_not_in_response()
{
$res = $this->get('/api/articles');
$res->assertJsonMissing([
'id' => 5,
'status' => 'draft'
]);
}
}
?>
Результат выполнения кода:
true
Пример
Метод также может проверять отсутствие строки в JSON-ответе:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ProductControllerTest extends TestCase
{
public function test_product_name_is_missing()
{
$res = $this->get('/api/products');
$res->assertJsonMissing('abcde');
}
}
?>
Результат выполнения кода:
true
Смотрите также
-
метод
assertJson,
который проверяет наличие данных в JSON-ответе -
метод
assertJsonFragment,
который проверяет наличие фрагмента в JSON-ответе -
метод
assertJsonPath,
который проверяет значение по пути в JSON-ответе -
метод
assertExactJson,
который проверяет полное соответствие JSON-ответа