Метод post
Метод post применяется в тестовых классах Laravel
для отправки POST-запроса к заданному маршруту. Первым
параметром передаётся путь (URI), вторым - массив данных
для отправки в теле запроса. Метод возвращает объект
ответа, который можно проверять с помощью assert-методов.
Синтаксис
<?php
$this->post($path, $data);
?>
Пример
Давайте отправим POST-запрос для создания новой статьи:
<?php
use TestsTestCase;
class ArticleControllerTest extends TestCase
{
public function test_article_store()
{
$res = $this->post('/articles', [
'title' => 'article',
'content' => 'abcde',
]);
$res->assertStatus(201);
}
}
?>
Результат выполнения кода:
"Test passed"
Пример
Давайте проверим ответ от контроллера с помощью
метода assertJson:
<?php
use TestsTestCase;
class ArticleControllerTest extends TestCase
{
public function test_article_json_response()
{
$res = $this->post('/articles', [
'title' => 'article',
'content' => 'abcde',
]);
$res->assertStatus(200)
->assertJson([
'message' => 'article created',
]);
}
}
?>
Результат выполнения кода:
"Test passed"
Пример
Давайте отправим POST-запрос с заголовками для аутентификации:
<?php
use TestsTestCase;
use AppModelsUser;
class AuthControllerTest extends TestCase
{
public function test_authenticated_request()
{
$user = User::factory()->create();
$res = $this->actingAs($user)
->post('/profile', [
'name' => 'article',
'email' => 'article@example.com',
]);
$res->assertStatus(200);
}
}
?>
Результат выполнения кода:
"Test passed"
Пример
Давайте протестируем валидацию данных с помощью метода
assertSessionHasErrors:
<?php
use TestsTestCase;
class ArticleControllerTest extends TestCase
{
public function test_article_validation_fails()
{
$res = $this->post('/articles', [
'title' => '',
'content' => 'abcde',
]);
$res->assertSessionHasErrors(['title']);
}
}
?>
Результат выполнения кода:
"Test passed"