Symfony - PHPunit使用jquery生成值提交表单(用于选择)

时间:2014-07-10 09:32:09

标签: javascript php jquery forms symfony

我对symfony2的PHPUnit功能测试有问题。

我有一些带选择的表单,它们的值不一定在formtype中设置,而是由Jquery生成。

例如: FormType包含:

class MyType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
    $builder
        ->add('zipCode',    'text')
        ->add('city',       'choice', array('choices' => array('' => ''), 'mapped' => false))
        ->add('way',        'choice', array('choices' => array('' => ''), 'mapped' => false));
    }
}

在我的视图中,用户设置了ZipCode,并且使用AJAX请求我为city设置了选项,然后是next。

通常,我会收到/提交表格:

$form = $crawler->selectButton($submit)->form();
$form['nameOfZipCodeField'] = 'VALUE';
$form['nameOfCityField'] = 'VALUE';
$form['nameOfWayField'] = 'VALUE';
$crawler = $client->submit($form);

但是,Way和City的值没有在formType中设置,所以,phpunit说的是:VALUE不是一个可能的值(可能值:)

这是合乎逻辑的...但我不知道该怎么做。 我试图直接设置输入值(通过Crawler的filter()方法)但我无法模拟按钮上的点击(不是链接,按钮)。

如果你有答案,我就开放:) 感谢的

1 个答案:

答案 0 :(得分:0)

这样做:

$form = $crawler->selectButton($submit)->form();
$form['nameOfZipCodeField'] = 'VALUE';
$form['nameOfCityField']->disableValidation();
$form['nameOfCityField'] = 'VALUE';
$form['nameOfWayField']->disableValidation();
$form['nameOfWayField'] = 'VALUE';
$crawler = $client->submit($form);
  

默认情况下,选择字段(选择,广播)已激活内部验证,以防止您设置无效值。如果您希望能够设置无效值,可以对整个表单或特定字段使用disableValidation()方法。

阅读文档http://symfony.com/doc/current/components/dom_crawler.html#selecting-invalid-choice-values