Sysmfony 4.4 - Тестирование формы с «ограничениями» в параметрах TimeType создает исключение UndefinedOptionsException - PullRequest
0 голосов
/ 09 апреля 2020

Я создал форму в Symfony 4.4 с полем TimeType, определенным следующим образом:

$builder
    ->add('planned_start', TimeType::class, [
        'widget' => 'single_text',
        'empty_data' => '',
        'constraints' => [
            new NotBlank([
                'message' => 'worksheet.worker.planned_start.required_error'
            ])
        ]
    ])

Функциональные тесты моего контроллера работают отлично и возвращают определенную ошибку, если не указано допустимое.

Но, когда я тестирую форму напрямую, я получаю следующее исключение, как будто я не могу наложить какие-либо ограничения на поле TimeType

Symfony\Component\OptionsResolver\Exception\UndefinedOptionsException: An error has occurred resolving the options of the form "Symfony\Component\Form\Extension\Core\Type\TimeType": The option "constraints" does not exist. Defined options are: "action", 
"allow_file_upload", "attr", "attr_translation_parameters", "auto_initialize", "block_name", "block_prefix", "by_reference", "choice_translation_domain", "compound", "data", "data_class", "disabled", "empty_data", "error_bubbling", "help", 
"help_attr", "help_html", "help_translation_parameters", "hours", "html5", "inherit_data", "input", "input_format", "label", "label_attr", "label_format", "label_translation_parameters", "mapped", "method", "minutes", "model_timezone", "placeholder", 
"post_max_size_message", "property_path", "reference_date", "required", "row_attr", "seconds", "translation_domain", "trim", "upload_max_size_message", "view_timezone", "widget", "with_minutes", "with_seconds".

/var/www/vendor/symfony/form/ResolvedFormType.php:99
/var/www/vendor/symfony/form/FormFactory.php:76
/var/www/vendor/symfony/form/FormBuilder.php:94
/var/www/vendor/symfony/form/FormBuilder.php:244
/var/www/vendor/symfony/form/FormBuilder.php:195
/var/www/vendor/symfony/form/FormFactory.php:30
/var/www/tests/Form/WorksheetWorkerFormTypeTest.php:39

Вот как я тестирую форму:

<?php

namespace App\Tests\Form\Type;

use App\Form\Type\TestedType;
use App\Form\WorksheetWorkerFormType;
use Doctrine\Persistence\ObjectManager;
use Symfony\Component\Form\PreloadedExtension;
use Symfony\Component\Form\Test\TypeTestCase;
// ...

class WorksheetWorkerFormTypeTest extends TypeTestCase
{
    private $objectManager;

    protected function setUp()
    {
        // mock any dependencies
        $this->objectManager = $this->createMock(ObjectManager::class);

        parent::setUp();
    }

    protected function getExtensions()
    {
        // create a type instance with the mocked dependencies
        $type = new WorksheetWorkerFormType($this->objectManager);

        return [
            // register the type instances with the PreloadedExtension
            new PreloadedExtension([$type], []),
        ];
    }

    public function testMinimal()
    {
        $form = $this->factory->create(WorksheetWorkerFormType::class);

        $form->submit([
            'planned_start' => '08:00',
            'planned_end' => '16:00'
        ]);

        $this->assertTrue($form->isValid());
    }
}

Любая идея?

Спасибо

...