HTTP-тести Laravel мають методи для JSON-запитів і перевірки відповіді.
it('creates a post via the API', function () {
Sanctum::actingAs(User::factory()->create(), ['posts:write']);
$this->postJson('/api/posts', ['title' => 'Черги в Laravel'])
->assertCreated()
->assertJsonPath('data.title', 'Черги в Laravel')
->assertJsonStructure(['data' => ['id', 'title', 'created_at']]);
});
it('rejects a post without a title', function () {
Sanctum::actingAs(User::factory()->create(), ['posts:write']);
$this->postJson('/api/posts', [])
->assertUnprocessable()
->assertInvalid(['title']);
});
Що варто знати:
postJson()ставитьAccept: application/json, тож помилки валідації приходять як 422 з JSON, а не редиректом.assertJsonPath()перевіряє одне значення за шляхом,assertJson()- частковий збіг,assertExactJson()- точний.- Флюентні перевірки дозволяють описати структуру з типами й гарантувати, що зайвих полів немає:
->assertJson(fn (AssertableJson $json) => $json
->where('data.id', $post->id)
->whereType('data.title', 'string')
->missing('data.author.password')
->etc());
- Автентифікація:
actingAs()для сесії,Sanctum::actingAs()з переліком здатностей для токенів.