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

Метод assertRedirectToRoute

Метод assertRedirectToRoute применяется к объекту ответа в тестах Laravel. Он проверяет, что ответ является редиректом (статус 302, 301 или другой) и что URL редиректа совпадает с URL указанного именованного маршрута. Первым параметром передаётся имя маршрута, вторым - массив параметров для маршрута (необязательно).

Синтаксис

<?php $this->assertRedirectToRoute($routeName, $parameters = []); ?>

Пример

Давайте протестируем контроллер, который после успешного создания статьи перенаправляет на маршрут с именем 'articles.index':

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Article; class ArticleControllerTest extends TestCase { public function test_store_redirects_to_index() { $data = [ 'title' => 'Test Article', 'content' => 'This is test content', ]; $res = $this->post('/articles', $data); $res->assertRedirectToRoute('articles.index'); } } ?>

Пример

Проверим редирект на маршрут с параметрами. Например, после обновления статьи перенаправление происходит на маршрут 'articles.show' с идентификатором статьи:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Article; class ArticleControllerTest extends TestCase { public function test_update_redirects_to_show() { $article = Article::create([ 'title' => 'Old Title', 'content' => 'Old Content', ]); $data = [ 'title' => 'New Title', 'content' => 'New Content', ]; $res = $this->put("/articles/{$article->id}", $data); $res->assertRedirectToRoute('articles.show', [ 'article' => $article->id, ]); } } ?>

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

"Test passed: response is redirect to route 'articles.show' with id 1"

Пример

Если необходимо проверить редирект на маршрут с несколькими параметрами, передайте их в виде ассоциативного массива:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; use App\Models\Category; class UserControllerTest extends TestCase { public function test_user_redirects_to_category_posts() { $user = User::create([ 'name' => 'John Doe', 'email' => 'john@example.com', ]); $category = Category::create([ 'name' => 'Technology', ]); $res = $this->actingAs($user) ->get("/user/{$user->id}/category/{$category->id}"); $res->assertRedirectToRoute('user.category.posts', [ 'user' => $user->id, 'category' => $category->id, ]); } } ?>

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

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