Intereting Posts
Нет следующего набора результатов. Пожалуйста, вызовите mysqli_more_results () / mysqli :: more_results (), чтобы проверить, следует ли вызывать эту функцию / метод Рекомендации по проверке защищенных методов с помощью PHPUnit Выполнение php с помощью crontab Я хочу добавить вспомогательные массивы в один массив в php Как сохранить изображение с URL-адреса с помощью PHP? Как приложение Facebook может отправить сообщение всем друзьям? Создание массива из структуры каталогов PHP Reg ex для разбора ссылки простой счетчик посетителей Отправка HTML-письма от php с помощью переменных PHP max_execution_time игнорируется (нет безопасного режима, нет общего хоста, только localhost / windows7 / php 5.3.1 и время ожидания Apache равно 300) вложенная тройная проблема php: тройной вывод! = if – else Почему getElementById не работает в этом случае? Больше не может добавлять поля регистрации в Magento 1.4.2.0 PHP-скрипт не запускается при запуске с Proxy-сервером в Angular

Администратор сущности Doctrine падает и не работает

Итак, когда я запускаю тесты в своем приложении ZF / Doctrine, некоторые тесты случаются, чтобы сломать Doctrine Entity Manager, и все последовательные тесты не выполняются из-за закрытия EM.

Я установил EM в своих тестах / bootstrap.php:

$application = new Zend_Application( APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini' ); $application->bootstrap(); (...) $bootstrap = $application->getBootstrap(); $em = $bootstrap->getResource('doctrinemanager'); 

Затем я устанавливаю его внутри функции setUp () test ($ this -> _ service – проверяемая служба):

 $em = App::getEntityManager(); $this->_em = clone $em; $this->_service->setEm($this->_em); 

И затем, когда я запускаю тест, который заставляет EM бросать исключение и закрывать (и это правильное поведение для меня), он остается закрытым во всех тестах, которые, конечно, терпят неудачу из-за закрытия EM. Как вы можете догадаться, это не то поведение, которое я ожидаю от тестов.

Я попытался клонировать EM, прежде чем устанавливать его в службе, но это не сработало.

Есть ли простой способ снова открыть EM, используя некоторые методы Doctrine?

Нет, не то, что я знаю. Самый простой способ – просто (переустановить) загрузку приложения для запуска на этапе настройки каждого теста. Таким образом, каждый тест получает новый экземпляр $application и новый, новый $em вместе с ним. Это быстрое решение.

Правильное решение, вероятно, состоит в том, чтобы отделить ваши тесты от вашего Zend_Application . Позвольте вашим тестам работать с простым менеджером сущностей, возможно, используя макет соединения или соединение с базой данных SQLite в памяти . Создайте только этот менеджер объектов на этапе тестирования, поэтому каждый тест получает новый менеджер сущностей. Это похоже на быстрое исправление выше, за исключением того, что теперь вы только специально создаете диспетчер объектов для тестирования вместо того, чтобы загружать все ваше приложение для каждого теста. Это компактнее и проще.