И така, когато провеждам тестове на моето ZF/Doctrine приложение, някои тестове прекъсват Doctrine Entity Manager и всички последователни тестове се провалят поради затварянето на EM.
Настроих EM в моите tests/bootstrap.php:
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap();
(...)
$bootstrap = $application->getBootstrap();
$em = $bootstrap->getResource('doctrinemanager');
След това го задавам във функцията test setUp() ($this->_service е услугата, която се тества):
$em = App::getEntityManager();
$this->_em = clone $em;
$this->_service->setEm($this->_em);
И след това, когато стартирам тест, който кара EM да хвърли изключение и да затвори (и това е правилното поведение за мен), той остава затворен през всички тестове, които разбира се се провалят поради затварянето на EM. Това просто не е поведението, което очаквам за тестове, както можете да се досетите.
Опитах да клонирам EM преди да го настроя в услугата, но не се получи.
Има ли лесен начин за повторно отваряне на EM, може би чрез някои методи на Doctrine?