РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1181 of 1392 menu

Метод patch

Метод patch применяется в тестовых классах Laravel для отправки PATCH-запросов на указанный URL. Первым параметром передаётся путь к маршруту, вторым - массив данных для обновления, третьим - массив заголовков (необязательно). Метод возвращает объект тестового ответа, который можно использовать для проверок.

Синтаксис

<?php $this->patch($url, $data, $headers); ?>

Пример

Давайте отправим PATCH-запрос на обновление статьи с id равным 1:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Article; use Illuminate\Foundation\Testing\RefreshDatabase; class ArticleTest extends TestCase { use RefreshDatabase; public function test_update_article() { $article = Article::create([ 'name' => 'article', 'text' => 'content', 'integer' => 1, 'boolean' => false, ]); $data = [ 'name' => 'updated article', 'text' => 'new content', ]; $res = $this->patch("/api/articles/{$article->id}", $data); $res->assertStatus(200); } } ?>

Результат выполнения кода:

"PATCH request completed successfully"

Пример

Давайте отправим PATCH-запрос с заголовками авторизации:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; use Illuminate\Foundation\Testing\RefreshDatabase; class UserTest extends TestCase { use RefreshDatabase; public function test_update_user_with_token() { $user = User::create([ 'name' => 'user', 'email' => 'user@example.com', 'password' => bcrypt('password'), ]); $token = $user->createToken('auth_token')->plainTextToken; $headers = [ 'Authorization' => "Bearer {$token}", 'Accept' => 'application/json', ]; $data = [ 'name' => 'updated user', ]; $res = $this->patch("/api/users/{$user->id}", $data, $headers); $res->assertStatus(200) ->assertJson(['name' => 'updated user']); } } ?>

Результат выполнения кода:

"User updated successfully"

Пример

Давайте проверим ответ при частичном обновлении ресурса:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Post; use Illuminate\Foundation\Testing\RefreshDatabase; class PostTest extends TestCase { use RefreshDatabase; public function test_partial_update_post() { $post = Post::create([ 'title' => 'post', 'body' => 'content', 'status' => 'draft', ]); $data = [ 'status' => 'published', ]; $res = $this->patch("/api/posts/{$post->id}", $data); $res->assertStatus(200) ->assertJson([ 'id' => $post->id, 'title' => 'post', 'body' => 'content', 'status' => 'published', ]); } } ?>

Результат выполнения кода:

["id" => 1, "title" => "post", "body" => "content", "status" => "published"]

Пример

Давайте проверим обработку ошибок валидации при PATCH-запросе:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Product; use Illuminate\Foundation\Testing\RefreshDatabase; class ValidationTest extends TestCase { use RefreshDatabase; public function test_update_product_with_invalid_data() { $product = Product::create([ 'name' => 'product', 'price' => 100, 'quantity' => 10, ]); $data = [ 'price' => -10, ]; $res = $this->patch("/api/products/{$product->id}", $data); $res->assertStatus(422) ->assertJsonValidationErrors(['price']); } } ?>

Результат выполнения кода:

"Validation error: price must be greater than zero"

Смотрите также

  • метод get,
    который выполняет GET-запрос
  • метод post,
    который выполняет POST-запрос
  • метод put,
    который выполняет PUT-запрос
  • метод delete,
    который выполняет DELETE-запрос
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить