我对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()方法)但我无法模拟按钮上的点击(不是链接,按钮)。
如果你有答案,我就开放:) 感谢的
答案 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