Метод assertRedirect
Метод assertRedirect применяется к объекту ответа
в тестах Laravel и проверяет, что полученный ответ
является редиректом и перенаправляет на правильный URL.
Метод принимает один параметр - ожидаемый URL для
перенаправления. Если ответ не является редиректом
или URL не совпадает, тест будет провален.
Синтаксис
<?php
$response->assertRedirect($url);
?>
Пример
Давайте протестируем редирект после успешного создания новой статьи:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Article;
class ArticleTest extends TestCase
{
public function test_store_redirects_to_article_page()
{
$data = [
'title' => 'New Article',
'content' => 'Content of new article'
];
$response = $this->post('/articles', $data);
$response->assertRedirect('/articles/1');
}
}
?>
Результат выполнения кода:
OK (1 test, 1 assertion)
Пример
Проверим редирект при обновлении статьи с возвратом на страницу редактирования:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Article;
class ArticleTest extends TestCase
{
public function test_update_redirects_to_edit_page()
{
$article = Article::create([
'title' => 'Old Title',
'content' => 'Old Content'
]);
$data = [
'title' => 'Updated Title',
'content' => 'Updated Content'
];
$response = $this->put("/articles/{$article->id}", $data);
$response->assertRedirect("/articles/{$article->id}/edit");
}
}
?>
Результат выполнения кода:
OK (1 test, 1 assertion)
Пример
Проверим редирект после удаления статьи с возвратом на список статей:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Article;
class ArticleTest extends TestCase
{
public function test_destroy_redirects_to_articles_list()
{
$article = Article::create([
'title' => 'Article to Delete',
'content' => 'Content to Delete'
]);
$response = $this->delete("/articles/{$article->id}");
$response->assertRedirect('/articles');
}
}
?>
Результат выполнения кода:
OK (1 test, 1 assertion)
Смотрите также
-
метод
assertRedirectToRoute,
который проверяет редирект на именованный маршрут -
метод
followingRedirects,
который автоматически выполняет все редиректы в тесте -
метод
assertStatus,
который проверяет статус HTTP-ответа -
метод
assertOk,
который проверяет успешный статус ответа