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

Метод request класса HttpBrowser

Метод request класса HttpBrowser выполняет HTTP-запрос к приложению и возвращает объект Crawler с ответом. Первым параметром передаётся HTTP-метод ('GET', 'POST' и так далее), вторым - URL запрашиваемой страницы. Третьим параметром можно передать массив параметров запроса, четвёртым - массив серверных переменных, пятым - содержимое тела запроса. Метод используется в функциональных тестах для имитации действий пользователя.

Синтаксис

$browser->request(string $method, string $uri, array $parameters = [], array $server = [], string $content = null)

Пример

Давайте выполним GET-запрос к главной странице приложения:

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

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

OK (1 test, 2 assertions)

Пример

Давайте выполним POST-запрос с параметрами формы:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testCreate(): void { $client = static::createClient(); $crawler = $client->request('POST', '/article/create', [ 'title' => 'article', 'content' => 'abcde', ]); $this->assertResponseIsSuccessful(); $this->assertSelectorTextContains('div', 'article'); } } ?>

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

OK (1 test, 2 assertions)

Пример

Давайте выполним запрос с пользовательскими заголовками:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testApi(): void { $client = static::createClient(); $crawler = $client->request('GET', '/api/articles', [], [ 'HTTP_ACCEPT' => 'application/json', 'HTTP_AUTHORIZATION' => 'Bearer token', ]); $this->assertResponseIsSuccessful(); $this->assertResponseFormatSame('json'); } } ?>

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

OK (1 test, 2 assertions)

Пример

Давайте выполним запрос с телом в формате JSON:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testJsonBody(): void { $client = static::createClient(); $crawler = $client->request( 'POST', '/api/article', [], ['CONTENT_TYPE' => 'application/json'], '{"title":"article","content":"abcde"}' ); $this->assertResponseIsSuccessful(); $this->assertSelectorTextContains('div', 'article'); } } ?>

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

OK (1 test, 2 assertions)

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

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