Как выполнить модульное тестирование наличия полей формы в форме Symfony2 с помощью eventlisteners

Вопрос:

Это на Symfony2.4:

Я пытаюсь проверить (в единичном тесте) наличие некоторых полей в форме, которые должны быть добавлены динамически слушателем событий. На основе данных, переданных форме, должны присутствовать определенные поля, а другие – не в одном случае и другая комбинация в другом случае.

Сама форма правильная, она работает (по-видимому), как и предполагалось.

Метод моей формы класса MyFormType::buildForm() примерно равен:

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name', null, array(
'label' => 'name'
));

$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event)

$form = $event->getForm();
$data = $event->getData();

if ($data->getSomeField() === 123) {
$form->add('field1');
} else {
$form->add('field2');
}
});
}

И в модульном тесте я получаю форму и устанавливаю некоторые данные (передача данных методу create() не имеет никакого значения):

$this->form = $this->getService('form.factory')->create(new MyFormType(), null, array('csrf_protection' => false));
$this->form->setData($data);

И сразу после этого я пытаюсь сбрасывать $this->form->all() чтобы увидеть, присутствуют ли динамически добавленные поля, но это не так.

$this->assertTrue($this->form->has('field1')); также не удается.

Любые идеи, которые я пропустил, или должны были сделать по-другому, чтобы иметь полностью инициализированную форму (со всеми соответствующими исполнителями событий, выполняемыми и всеми присутствующими, динамически добавленными или нет)?

Оцените статью
TechArks.Ru
Добавить комментарий