У меня вопрос к тестированию Symfony FormType. http://symfony.com/doc/current/cookbook/form/unit_testing.html
В моих типах типов тип entity
является общим. Тестирование типов форм с типом формы объекта doctrine является ужасным.
Это мое поле формы.
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('products', 'entity', array(
'class' => 'AcmeDemoBundle:Product',
'label' => 'Product',
'property' => 'name',
'required' => false,
'mapped' => true,
'multiple' => true,
'expanded' => true
));
}
И вот макет для поля.
private function getEntityTypeMock()
{
$entityRepositoryMock = $this->getMockBuilder('Doctrine\ORM\EntityRepository')
->disableOriginalConstructor()
->getMock()
;
$entityRepositoryMock->expects($this->once())
->method('findAll')
->will($this->returnValue(array()));
$classMetaDataMock = $this->getMockBuilder('Doctrine\ORM\Mapping\ClassMetadata')
->disableOriginalConstructor()
->getMock();
$mockEntityManager = $this->getMockBuilder('Doctrine\ORM\EntityManager')
->disableOriginalConstructor()
->getMock();
$mockEntityManager->expects($this->any())
->method('getClassMetadata')
->will($this->returnValue($classMetaDataMock));
$mockEntityManager->expects($this->once())
->method('getRepository')
->will($this->returnValue($entityRepositoryMock));
$mockRegistry = $this->getMockBuilder('Doctrine\Bundle\DoctrineBundle\Registry')
->disableOriginalConstructor()
->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;
}
Это действительно правильный способ? Внутри TypeTestCase
у меня нет доступа ни к чему, никакого контейнера без ядра, ничего. Это делает тестирование типа формы довольно жестким и удручающим.
Есть ли лучший способ проверить типы форм? Или более простой способ борьбы с типами, которые имеют зависимость от ORM?
Приветствия.