Hola, gracias por pasar,
A ver si lo puedo resumir.
- Las carpetas están así:
Código:
/application
/library
/Bisna
/Doctrine
/DoctrineExtensions
/Entities
/Entity
/Proxy
/Repository
UnEntity.php
/Symfony
/Zend
/public
- El application.ini tiene toda la configuración de doctrine.dbal y doctrine.orm, así como los autoloaderNamespace[]
- El bootstrap tiene _initAutoloader() con esto:
Código PHP:
require_once APPLICATION_PATH . '/../library/Doctrine/Common/ClassLoader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$bisnaAutoloader = new DoctrineCommonClassLoader('Bisna');
$autoloader->pushAutoloader(array($bisnaAutoloader, 'loadClass'), 'Bisna');
$appAutoloader = new DoctrineCommonClassLoader('Entities');
$autoloader->pushAutoloader(array($appAutoloader, 'loadClass'), 'Entities');
- Los Repository tienen las funciones que se encargan de guardar en la DB.
A esto te referías GatorV, a tener las funciones en el modelo?
- Estas funciones son llamadas desde el controller
(Que es la parte que quiero testear en caso de error)
Código PHP:
public function init()
{
$this->doctrine = Zend_Registry::get('doctrine');
$this->entityManager = $this->doctrine->getEntityManager();
$this->companiesRepository = $this->entityManager
->getRepository('\Entities\Entity\UnEntity');
}
La idea es hacer la validaciones y envolver la parte de doctrine en un try catch
Si genera una excepción alguna parte del código, pasa al catch, el cual registra el error en la db o en un log, redirige y lanza un flashmessenger para avisar al usuario de que algo no ha salido bien.
El testear hasta la función va bien, el tema está en hacer el test del try sin poner el error en el propio controller que estoy testeando.
- Y la parte del controller, create por ejemplo:
Código PHP:
# El namespace lo pongo etre comillas porque no salen en el code.
$unentity = new '\Entities\Entity\UnEntity()';
// La función del Repository
$this->UnEntityRepository->createUnEntity($unentity, $form->getValues());
$this->entityManager->flush();
Saludos,