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

Метод assertResponseIsSuccessful

Метод assertResponseIsSuccessful из класса WebTestCase проверяет, что полученный HTTP-ответ имеет успешный статусный код. Успешными считаются коды в диапазоне от 200 до 299. Если статусный код ответа не входит в этот диапазон, тест завершается ошибкой с сообщением о фактическом коде ответа. Метод не принимает параметров и вызывается после выполнения запроса через клиент.

Синтаксис

$this->assertResponseIsSuccessful();

Пример

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

<?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', '/'); $this->assertResponseIsSuccessful(); } } ?>

Если контроллер главной страницы возвращает ответ со статусом 200, тест пройдёт успешно. Если статус отличается, например 500, тест завершится ошибкой.

Пример

Давайте создадим контроллер, который возвращает ответ со статусом 200, и проверим его:

<?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('article'); } } ?>

Теперь напишем тест для этого контроллера:

<?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->assertResponseIsSuccessful(); } } ?>

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

php bin/phpunit tests/Controller/ArticleControllerTest.php

Тест пройдёт успешно, так как статусный код ответа равен 200:

"OK (1 test, 1 assertion)"

Пример

Давайте создадим контроллер, который возвращает ответ со статусом 404, и проверим его:

<?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('not found', Response::HTTP_NOT_FOUND); } } ?>

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

<?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->assertResponseIsSuccessful(); } } ?>

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

php bin/phpunit tests/Controller/ArticleControllerTest.php

Тест завершится ошибкой, так как статусный код ответа равен 404:

<+html+> "Failed asserting that the response status code is successful (404)." <-html+>

Пример

Давайте проверим успешность ответа для страницы, которая принимает параметр из 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('/user/{name}', name: 'article_user')] public function user(string $name): Response { return new Response($name); } } ?>

Теперь напишем тест для адреса /user/abcde:

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

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

php bin/phpunit tests/Controller/ArticleControllerTest.php

Тест пройдёт успешно, так как статусный код ответа равен 200:

<+html+> "OK (1 test, 1 assertion)" <-html+>

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

  • метод assertResponseStatusCodeSame,
    который проверяет конкретный статусный код ответа
  • метод assertResponseRedirects,
    который проверяет перенаправление ответа
  • метод request,
    который выполняет HTTP-запрос в тесте
  • метод getResponse,
    который возвращает объект ответа после запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить