Метод submit класса KernelBrowser
Метод submit класса KernelBrowser
используется в функциональных тестах Symfony
для отправки формы. Первым параметром передаётся
объект формы Form, полученный из краулера,
вторым - массив значений полей формы.
Метод выполняет запрос к приложению и
возвращает объект Crawler с результатом ответа.
Синтаксис
public function submit(Form $form, array $values = []): Crawler
Пример
Давайте создадим форму и отправим её через метод submit:
<?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/create');
$form = $crawler->selectButton('Save')->form();
$crawler = $client->submit($form, [
'title' => 'abcde',
'content' => 'article',
]);
$this->assertResponseIsSuccessful();
$this->assertSelectorTextContains('h1', 'abcde');
}
}
?>
Результат выполнения теста:
"Test passed"
Пример
Давайте отправим форму с пустыми значениями и проверим ошибку валидации:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testSubmitEmptyForm(): void
{
$client = static::createClient();
$crawler = $client->request('GET', '/article/create');
$form = $crawler->selectButton('Save')->form();
$crawler = $client->submit($form, [
'title' => '',
'content' => '',
]);
$this->assertSelectorExists('.form-error');
}
}
?>
Результат выполнения теста:
"Test passed"
Смотрите также
-
класс
KernelBrowser,
который эмулирует браузер в тестах -
метод
request,
который выполняет HTTP-запрос -
метод
submitForm,
который отправляет форму по имени -
метод
click,
который кликает по ссылке в ответе