Запрос post в тестах Laravel
Формы обычно шлют POST: создать
запись, войти, сохранить настройки.
В тесте вызывают
$this->post('/путь', [...]) -
второй аргумент - поля формы,
как будто их отправил браузер.
После успешного сохранения Laravel
часто делает редирект. Его ловят
через assertRedirect
или статус 302:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class PostStoreTest extends TestCase
{
public function test_store_post(): void
{
$response = $this->post('/posts', [
'title' => 'Test',
'text' => 'Text',
]);
$response->assertStatus(302);
}
}
?>
assertRedirect('/posts')
строже: проверяет не только
редирект, но и куда именно.
assertStatus(302)
достаточно, если важно лишь
«был редирект», без точного URL.
Ключи массива должны совпадать с именами полей формы и правил валидации. Если поле обязательное пропущено, вместо редиректа может прийти ответ с ошибками - тест подскажет об этом.
Напишите post-тест
на создание записи с полями.
Проверьте ответ через
assertStatus(302)
или assertRedirect.
Зачем вторым аргументом передавать массив полей?