繁体   English   中英

Symfony2使用实体尝试测试它的自定义表单类型

[英]Symfony2 Custom form type using entity trying to test it

我正在尝试测试我创建的表单类型,它使用带有类实体的字段

这是表单的创建

$builder
            ->add('name', 'text')
            ->add('description', 'textarea')
            ->add('services', 'entity', array('class' => 'MyBundle:Service', 'group_by' => 'category.name', 'property' => 'name', 'multiple' => true, 'required' => false));

当我构建表单时,这非常好用,但后来我试图对这种类型进行单元测试

按照此示例介绍如何测试自定义表单类型

我收到了这个错误

Symfony \\ Component \\ Form \\ Exception \\ Exception:无法加载类型“entity”

在此命令的单元测试开始时引发错误:

    $type = new MyType();
    $form = $this->factory->create($type);

有关如何修复此错误以便使用实体测试我的自定义表单类型的任何想法?

提前致谢

我想你不能用实体类型单元测试表单,因为它被定义为服务。 您是否尝试过手动添加

编辑:恕我直言你应该模拟实体类型,因为它涉及doctrine,这取决于现有的数据库连接等等,加载完整的内核。 所以你不再进行单元测试了。 这将是一个功能测试。 也许这就是原因,为什么它在单元测试中不可用。

根据添加类型下的symfony文档, 您的表单取决于

要正确创建表单,您需要在测试中使表单工厂可以使用该类型。 最简单的方法是在使用PreloadedExtension类创建父窗体之前手动注册它:

 class TestedTypeTest extends TypeTestCase { protected function getExtensions() { $childType = new TestChildType(); return array(new PreloadedExtension(array( $childType->getName() => $childType, ), array())); } public function testSubmitValidData() { $type = new TestedType(); $form = $this->factory->create($type); // ... your test } } 

在方法create中为第二个参数添加null。

$type = new MyType();
$form = $this->factory->create($type, null);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM