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

Метод submitForm класса KernelBrowser

Метод submitForm класса KernelBrowser используется в функциональных тестах Symfony для отправки HTML-формы. Первым параметром передаётся объект Form или CSS-селектор формы, вторым - массив значений полей, третьим - массив файлов. Метод возвращает объект Crawler с ответом сервера.

Синтаксис

$res = $browser->submitForm(Form $form, array $values = [], array $files = []);

Пример

Давайте создадим форму для добавления статьи и отправим её в тесте:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/new', name: 'article_new')] public function new(Request $request): Response { if ($request->isMethod('POST')) { return new Response('article created'); } return $this->render('article/new.html.twig'); } } ?>

Шаблон с формой:

<form method="post" action="/article/new"> <input type="text" name="title" value=""> <input type="text" name="text" value=""> <button type="submit">save</button> </form>

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

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testSubmitForm(): void { $client = static::createClient(); $crawler = $client->request('GET', '/article/new'); $form = $crawler->selectButton('save')->form(); $client->submitForm($form, [ 'title' => 'abcde', 'text' => 'hello', ]); $this->assertResponseIsSuccessful(); } } ?>

Пример

Давайте отправим форму, выбрав её по CSS-селектору:

<?php namespace App\Tests\Controller; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; class ArticleControllerTest extends WebTestCase { public function testSubmitBySelector(): void { $client = static::createClient(); $client->request('GET', '/article/new'); $client->submitForm('form', [ 'title' => 'abcde', 'text' => 'hello', ]); $res = $client->getResponse()->getContent(); $this->assertSame('article created', $res); } } ?>

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

"article created"

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

  • метод submit,
    который отправляет форму по кнопке
  • метод getCrawler,
    который возвращает объект Crawler
  • метод getResponse,
    который возвращает ответ сервера
  • класс KernelBrowser,
    который используется для тестирования приложения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить