Метод assertNoContent
Метод assertNoContent применяется к HTTP-ответу в тестах Laravel и проверяет, что сервер вернул указанный код состояния, а тело ответа отсутствует или равно null. Первым параметром передаётся ожидаемый HTTP-статус (по умолчанию 204), вторым - массив с дополнительными заголовками для проверки. Метод полезен для тестирования операций удаления или обновления, которые не возвращают данных, например, при успешном выполнении DELETE-запроса.
Синтаксис
<?php
$this->assertNoContent($status = 204, $headers = []);
?>
Пример
Проверим успешное удаление пользователя через DELETE-запрос:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\User;
class UserTest extends TestCase
{
public function test_delete_user()
{
$user = User::factory()->create();
$res = $this->delete('/api/users/' . $user->id);
$res->assertNoContent();
}
}
?>
Пример
Проверим ответ с кодом 200, когда метод возвращает пустой массив:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Post;
class PostTest extends TestCase
{
public function test_update_post_no_content()
{
$post = Post::factory()->create([
'text' => 'Old text'
]);
$data = ['text' => 'New text'];
$res = $this->put('/api/posts/' . $post->id, $data);
$res->assertNoContent(200);
}
}
?>
Пример
Используем метод для проверки ответа с дополнительными заголовками:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Order;
class OrderTest extends TestCase
{
public function test_delete_order_with_headers()
{
$order = Order::factory()->create();
$headers = ['X-Custom-Header' => 'value'];
$res = $this->withHeaders($headers)
->delete('/api/orders/' . $order->id);
$res->assertNoContent(204, ['X-Processed-By' => 'api']);
}
}
?>
Результат выполнения кода:
"Test passed: response status 204 with empty body"
Смотрите также
-
метод
assertStatus,
который проверяет произвольный HTTP-код ответа -
метод
assertOk,
который проверяет успешный ответ с кодом200 -
метод
assertCreated,
который проверяет ответ с кодом201 -
метод
assertNotFound,
который проверяет ответ с кодом404