Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Symfony表单实体类型单元测试_Unit Testing_Symfony_Doctrine_Phpunit - Fatal编程技术网

Unit testing Symfony表单实体类型单元测试

Unit testing Symfony表单实体类型单元测试,unit-testing,symfony,doctrine,phpunit,Unit Testing,Symfony,Doctrine,Phpunit,我正在尝试为我的表单添加单元测试。 问题是,几乎我所有的表单都有其他类型,如集合、实体类型等 我这样做是为了模拟实体类型: /** * @return \PHPUnit_Framework_MockObject_MockObject */ protected function mockEntityType() { $mockEntityManager = $this->getMockBuilder('Doctrine\ORM\EntityManager') -&

我正在尝试为我的表单添加单元测试。 问题是,几乎我所有的表单都有其他类型,如集合、实体类型等

我这样做是为了模拟实体类型:

/**
 * @return \PHPUnit_Framework_MockObject_MockObject
 */
protected function mockEntityType()
{
    $mockEntityManager = $this->getMockBuilder('Doctrine\ORM\EntityManager')
        ->disableOriginalConstructor()
        ->getMock();

    $mockRegistry = $this->getMockBuilder('Doctrine\Bundle\DoctrineBundle\Registry')
        ->disableOriginalConstructor()
        ->setMethods(array('getManagerForClass'))
        ->getMock();

    $mockRegistry->expects($this->any())->method('getManagerForClass')
        ->will($this->returnValue($mockEntityManager));

    $mockEntityType = $this->getMockBuilder('Symfony\Bridge\Doctrine\Form\Type\EntityType')
        ->setMethods(array('getName'))
        ->setConstructorArgs(array($mockRegistry))
        ->getMock();

    $mockEntityType->expects($this->any())->method('getName')
        ->will($this->returnValue('entity'));

    return $mockEntityType;
}
然后在测试中使用此选项,例如:

public function testCompanyType()
{
     $formData = array(
        'name' => 'Test name',
        'description' => 'Test description',
    );

    $company = new Company();

    $this->fromArray($company, $formData);

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


    // submit the data to the form directly
    $form->submit($formData);

    $this->assertTrue($form->isSynchronized());
    $this->assertEquals($company->getName(), $form->getData()->getName());

    $view = $form->createView();
    $children = $view->children;

    foreach (array_keys($formData) as $key) {
        $this->assertArrayHasKey($key, $children);
    }
}
问题在于,行中的$form=$this->factory->create($type) 我得到一个错误:

“路由名称”选项不存在。定义的选项是:“操作”, “属性”、“自动初始化”、“块名称”、“按引用”, “选择属性”、“选择标签”、“选择列表”、“选择加载器”, “选择名称”、“选择翻译域”、“选择值”、“选择”, “选择作为值”、“类”、“复合”、“数据”、“数据类”, “禁用”、“em”、“空\u数据”、“空\u值”、“错误\u冒泡”, “扩展”、“分组依据”、“id阅读器”、“继承数据”、“标签”, “标签属性”、“标签格式”、“加载器”、“映射”、“最大长度”, “方法”、“多个”、“模式”、“占位符”, “post_max_size_message”、“首选选项”、“属性”, “属性路径”、“查询生成器”、“只读”、“必需”, “翻译域”、“修剪”、“虚拟”

它以某种方式模拟实体类型,但使用了错误的选项。EntityType应具有
路由\u名称


有人能帮我解决这个问题吗?

那么你在哪里调用mockEntityType?测试表单的意义是什么?我可以理解测试表单类型,但是表单本身?让Symfony来担心这个问题。在安装时,我加载扩展并添加mockEntity类型,那么您在哪里调用mockEntityType?测试表单的意义是什么?我可以理解测试表单类型,但是表单本身?让Symfony来担心这个问题。在安装时,我加载扩展并添加mockEntity类型