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

Метод assertRouteSame

Метод assertRouteSame относится к секции тестирования Symfony и вызывается внутри тестового класса, унаследованного от WebTestCase. Он проверяет, что последний выполненный запрос был обработан именно тем маршрутом, имя которого передано первым параметром. Вторым параметром можно передать массив параметров маршрута, а третьим - сообщение об ошибке. Если маршрут не совпадает, тест завершается с ошибкой.

Синтаксис

assertRouteSame(string $expectedRoute, array $parameters = [], string $message = '')

Пример

Давайте создадим контроллер с маршрутом и проверим, что запрос обрабатывается именно этим маршрутом:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(): Response { return new Response('hello'); } } ?>

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

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

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

"OK (1 test, 1 assertion)"

Пример

Давайте проверим маршрут с параметрами. Создадим контроллер, принимающий параметр из URL:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/{id}', name: 'article_show')] public function show(int $id): Response { return new Response('article ' . $id); } } ?>

Напишем тест, который проверяет маршрут вместе с его параметрами:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testShow(): void { $client = static::createClient(); $client->request('GET', '/article/1'); $this->assertRouteSame('article_show', ['id' => 1]); } } ?>

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

"OK (1 test, 1 assertion)"

Пример

Давайте разберём случай, когда маршрут не совпадает. Тест завершится ошибкой:

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

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

"Failed asserting that the request matched the route 'article_show'."

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

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