Метод delete
Метод delete применяется к экземпляру тестового клиента
и позволяет имитировать DELETE-запросы к маршрутам приложения.
Первым параметром передаётся URI, вторым - массив данных,
третьим - массив заголовков. Метод возвращает экземпляр
ответа для дальнейших проверок.
Синтаксис
<?php
$this->delete($uri, $data, $headers);
?>
Пример
Давайте отправим DELETE-запрос на удаление статьи с идентификатором 1:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Article;
class ArticleTest extends TestCase
{
public function test_delete_article()
{
$article = Article::factory()->create();
$res = $this->delete("/api/articles/{$article->id}");
$res->assertStatus(200);
$this->assertDatabaseMissing('articles', ['id' => $article->id]);
}
}
?>
Результат выполнения кода:
"Test passed successfully"
Пример
Отправим DELETE-запрос с передачей данных и заголовков:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\User;
class UserTest extends TestCase
{
public function test_delete_user_with_data()
{
$user = User::factory()->create();
$data = ['force' => true];
$headers = ['X-Requested-With' => 'XMLHttpRequest'];
$res = $this->delete("/api/users/{$user->id}", $data, $headers);
$res->assertStatus(204);
}
}
?>
Пример
Проверим, что DELETE-запрос возвращает ошибку при удалении несуществующей записи:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ArticleTest extends TestCase
{
public function test_delete_nonexistent_article()
{
$res = $this->delete('/api/articles/999');
$res->assertStatus(404);
$res->assertJson(['message' => 'Article not found']);
}
}
?>
Результат выполнения кода:
"Test passed successfully"