forms - 测试 symfony 2 表单

标签 forms unit-testing testing symfony symfony-forms

我开发了新类型,但我不知道如何测试它。 断言注释未加载且未调用验证。 谁能帮帮我?

class BarcodeType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->
            add('price');
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Bundles\MyBundle\Form\Model\Barcode',
            'intention'  => 'enable_barcode',
        ));
    }

    public function getName()
    {
        return 'enable_barcode';
    }
}

A 具有以下用于存储表单数据的模型。

namepspace Bundles\MyBundle\Form\Model;
class Barcode
{
    /**
     * @Assert\Range(
     *      min = "100",
     *      max = "100000",
     *      minMessage = "...",
     *      maxMessage = "..."
     * )
     */
    public $price;
}

我开发了一些这样的测试,表单没有得到有效数据但它是有效的! (因为没有应用注解) 我尝试添加 ValidatorExtension 但我不知道如何设置构造函数参数

    function test...()
    {
        $field = $this->factory->createNamed('name', 'barcode');
        $field->bind(
                array(
                    'price'         => 'hello',
        ));

        $data = $field->getData(); 

        $this->assertTrue($field->isValid()); // Must not be valid 

    }

最佳答案

不确定为什么需要对表单进行单元测试。你不能对你的实体进行单元测试验证并用你的预期输出覆盖 Controller 吗? 在测试实体验证时你可以使用这样的东西:

public function testIncorrectValuesOfUsernameWhileCallingValidation()
{
  $v =  \Symfony\Component\Validator\ValidatorFactory::buildDefault();
  $validator = $v->getValidator();

  $not_valid = array(
    'as', '1234567890_234567890_234567890_234567890_dadadwadwad231',
    "tab\t", "newline\n",
    "Iñtërnâtiônàlizætiøn hasn't happened to ", 'trśżź',
    'semicolon;', 'quote"', 'tick\'', 'backtick`', 'percent%', 'plus+', 'space ', 'mich @l'
  );    

  foreach ($not_valid as $key) {
    $violations = $validator->validatePropertyValue("\Brillante\SampleBundle\Entity\User", "username", $key);
    $this->assertGreaterThan(0, count($violations) ,"dissalow username to be ($key)");
  }

关于forms - 测试 symfony 2 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13158732/

相关文章:

java - 为什么不能同时使用 Mock 和 InjectMocks?

javascript - 如何将表格放入表格中?

jquery - 评论表单的模态对话框示例?

c# - 如何实现自动选择html中的项目并点击提交?

visual-studio - Nunit 单元测试中未命中断点

sql-server - 单元测试 SQL

html - 如何使 html 页面自动适合移动设备屏幕?

ruby - 是否有任何语言具有与 Ruby 的 RubySpec 项目相当的项目?

c# - 如何使用最小起订量模拟 Entity Framework DbRawSqlQuery 对象?

c# - 从 VS2008 测试项目创建独立的可执行文件