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

Класс HttpBrowser

Класс HttpBrowser используется в функциональных тестах Symfony для эмуляции поведения браузера. Он позволяет отправлять HTTP-запросы к приложению, переходить по ссылкам, отправлять формы и следовать редиректам без запуска реального веб-сервера. В отличие от KernelBrowser, класс HttpBrowser работает как самостоятельный HTTP-клиент и может использоваться вне контекста WebTestCase. Первым параметром конструктор принимает экземпляр HttpKernelInterface, который будет обрабатывать запросы.

Синтаксис

use Symfony\Component\HttpKernel\HttpBrowser; $browser = new HttpBrowser($kernel); $crawler = $browser->request('GET', 'https://example.com/');

Пример

Давайте создадим экземпляр HttpBrowser и выполним GET-запрос к тестовому приложению:

<?php namespace App\Tests; use App\Kernel; use Symfony\Component\HttpKernel\HttpBrowser; use PHPUnit\Framework\TestCase; class HttpBrowserTest extends TestCase { public function testIndex(): void { $kernel = new Kernel('test', true); $browser = new HttpBrowser($kernel); $crawler = $browser->request('GET', 'https://example.com/'); $this->assertSame(200, $browser->getResponse()->getStatusCode()); $this->assertStringContainsString('hello', $browser->getResponse()->getContent()); } } ?>

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

OK (1 test, 2 assertions)

Пример

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

<?php namespace App\Tests; use App\Kernel; use Symfony\Component\HttpKernel\HttpBrowser; use PHPUnit\Framework\TestCase; class HttpBrowserPostTest extends TestCase { public function testSubmit(): void { $kernel = new Kernel('test', true); $browser = new HttpBrowser($kernel); $crawler = $browser->request('POST', 'https://example.com/user', [ 'name' => 'abcde', ]); $this->assertSame(200, $browser->getResponse()->getStatusCode()); $this->assertSame('abcde', $browser->getResponse()->getContent()); } } ?>

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

OK (1 test, 2 assertions)

Пример

Давайте перейдём по ссылке на странице с помощью метода click и проверим содержимое ответа:

<?php namespace App\Tests; use App\Kernel; use Symfony\Component\HttpKernel\HttpBrowser; use PHPUnit\Framework\TestCase; class HttpBrowserClickTest extends TestCase { public function testClickLink(): void { $kernel = new Kernel('test', true); $browser = new HttpBrowser($kernel); $crawler = $browser->request('GET', 'https://example.com/'); $link = $crawler->selectLink('article')->link(); $crawler = $browser->click($link); $this->assertSame(200, $browser->getResponse()->getStatusCode()); $this->assertStringContainsString('article', $browser->getResponse()->getContent()); } } ?>

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

OK (1 test, 2 assertions)

Пример

Давайте отправим форму через метод submit и проверим редирект:

<?php namespace App\Tests; use App\Kernel; use Symfony\Component\HttpKernel\HttpBrowser; use PHPUnit\Framework\TestCase; class HttpBrowserSubmitTest extends TestCase { public function testSubmitForm(): void { $kernel = new Kernel('test', true); $browser = new HttpBrowser($kernel); $crawler = $browser->request('GET', 'https://example.com/form'); $form = $crawler->selectButton('submit')->form(); $form['name'] = 'abcde'; $crawler = $browser->submit($form); $this->assertSame(302, $browser->getResponse()->getStatusCode()); $this->assertTrue($browser->getResponse()->isRedirect()); } } ?>

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

OK (1 test, 2 assertions)

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

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