如何使用eventlisteners对Symfony2表单中表单字段的存在进行单元测试

时间:2014-07-23 15:52:10

标签: php forms unit-testing symfony symfony-2.4

这是在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'));也失败了。

我错过了哪些想法,或者为了拥有一个完全初始化的表单(所有相关的事件监听器都已执行且所有字段都存在,动态添加与否),我应该做些什么?

0 个答案:

没有答案