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

Метод assertResponseRedirects

Метод assertResponseRedirects из класса WebTestCase проверяет, что полученный ответ является HTTP-редиректом. Первым параметром передаётся ожидаемый URL перенаправления, вторым - ожидаемый код статуса (по умолчанию 302). Если URL не указан, метод проверяет лишь сам факт редиректа.

Синтаксис

assertResponseRedirects(?string $expectedLocation = null, ?int $expectedCode = null)

Пример

Давайте создадим контроллер, который выполняет редирект с адреса '/old' на адрес '/new':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/old', name: 'article_old')] public function old(): RedirectResponse { return $this->redirectToRoute('article_new'); } #[Route('/new', name: 'article_new')] public function new(): RedirectResponse { return $this->redirect('/hello'); } } ?>

Теперь напишем тест, который проверяет редирект:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testRedirect(): void { $client = static::createClient(); $client->request('GET', '/old'); $this->assertResponseRedirects('/new'); } } ?>

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

"OK (1 test, 1 assertion)"

Пример

Давайте проверим редирект с конкретным кодом статуса 301:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testPermanentRedirect(): void { $client = static::createClient(); $client->request('GET', '/old'); $this->assertResponseRedirects('/new', 302); } } ?>

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

"OK (1 test, 1 assertion)"

Пример

Если нужно проверить только факт редиректа без указания URL, достаточно вызвать метод без параметров:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testAnyRedirect(): void { $client = static::createClient(); $client->request('GET', '/old'); $this->assertResponseRedirects(); } } ?>

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

"OK (1 test, 1 assertion)"

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

  • метод followRedirect,
    который переходит по редиректу
  • метод assertResponseStatusCodeSame,
    который проверяет код статуса ответа
  • метод assertResponseIsSuccessful,
    который проверяет успешность ответа
  • класс WebTestCase,
    который предоставляет методы для тестирования
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить