Метод assertCheckboxChecked
Метод assertCheckboxChecked относится к классу
WebTestCase и используется в функциональных тестах
Symfony для проверки состояния чекбокса на странице.
Первым параметром передаётся имя (или id) поля чекбокса,
вторым - необязательное сообщение об ошибке.
Метод ищет чекбокс в текущем ответе и утверждает,
что он имеет атрибут checked.
Синтаксис
assertCheckboxChecked(string $fieldName, string $message = '')
Пример
Давайте создадим простую форму с чекбоксом и проверим, что он отмечен. Сначала создадим контроллер с формой:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class FormController extends AbstractController
{
#[Route('/form', name: 'form_show')]
public function show(): Response
{
return $this->render('form/index.html.twig');
}
}
?>
Теперь создадим Twig-шаблон с формой, в которой чекбокс отмечен по умолчанию:
<form method="post">
<input type="checkbox" name="agree" id="agree" checked>
<button type="submit">Send</button>
</form>
Напишем тест, который проверяет, что чекбокс отмечен:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class FormControllerTest extends WebTestCase
{
public function testCheckboxIsChecked(): void
{
$client = static::createClient();
$crawler = $client->request('GET', '/form');
$this->assertCheckboxChecked('agree');
}
}
?>
Результат выполнения теста:
OK (1 test, 1 assertion)
Пример
Давайте проверим, что чекбокс не отмечен,
и посмотрим, как метод выбросит ошибку.
Изменим шаблон, убрав атрибут checked:
<form method="post">
<input type="checkbox" name="agree" id="agree">
<button type="submit">Send</button>
</form>
Теперь запустим тот же тест:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class FormControllerTest extends WebTestCase
{
public function testCheckboxIsChecked(): void
{
$client = static::createClient();
$crawler = $client->request('GET', '/form');
$this->assertCheckboxChecked('agree');
}
}
?>
Результат выполнения теста:
Failed asserting that the checkbox "agree" is checked.
Пример
Давайте используем метод с пользовательским сообщением об ошибке. Это помогает быстрее понять причину падения теста:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class FormControllerTest extends WebTestCase
{
public function testCheckboxWithMessage(): void
{
$client = static::createClient();
$crawler = $client->request('GET', '/form');
$this->assertCheckboxChecked('agree', 'Checkbox "agree" must be checked');
}
}
?>
Результат выполнения теста:
Failed asserting that the checkbox "agree" is checked: Checkbox "agree" must be checked
Смотрите также
-
метод
assertInputValueSame,
который проверяет значение поля ввода -
метод
assertFormValue,
который проверяет значение элемента формы -
метод
assertSelectorExists,
который проверяет наличие элемента на странице -
класс
WebTestCase,
который предоставляет методы для функционального тестирования