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类型