public static function loadListeners($module_path) { foreach (glob($module_path . '*', GLOB_ONLYDIR) as $module) { $moduleName = basename($module); $moduleTestCaseClassname = '\\' . $moduleName . 'Test\\Framework\\TestCase'; $listenerOptions = new \Zend\ModuleManager\Listener\ListenerOptions(array('module_paths' => array($module_path . '/' . $moduleName))); $defaultListener = new \Zend\ModuleManager\Listener\DefaultListenerAggregate($listenerOptions); if (method_exists($moduleTestCaseClassname, 'setLocator')) { $config = $defaultListener->getConfigListener()->getMergedConfig(); $di = new \Zend\Di\Di(); $di->instanceManager()->addTypePreference('Zend\\Di\\LocatorInterface', $di); if (isset($config['di'])) { $diConfig = new \Zend\Di\Config($config['di']); $diConfig->configure($di); } $routerDiConfig = new \Zend\Di\Config(array('definition' => array('class' => array('Zend\\Mvc\\Router\\RouteStackInterface' => array('instantiator' => array('Zend\\Mvc\\Router\\Http\\TreeRouteStack', 'factory')))))); $routerDiConfig->configure($di); call_user_func_array($moduleTestCaseClassname . '::setLocator', array($di)); } } }
$modulePaths = array(dirname($rootPath)); if (isset($additionalModulePaths)) { $modulePaths = array_merge($modulePaths, $additionalModulePaths); } // Load this module and defined dependencies $modules = array($moduleName); if (isset($moduleDependencies)) { $modules = array_merge($modules, $moduleDependencies); } $listenerOptions = new Zend\ModuleManager\Listener\ListenerOptions(array('module_paths' => $modulePaths)); $defaultListeners = new Zend\ModuleManager\Listener\DefaultListenerAggregate($listenerOptions); $sharedEvents = new Zend\EventManager\SharedEventManager(); $moduleManager = new \Zend\ModuleManager\ModuleManager($modules); $moduleManager->getEventManager()->setSharedManager($sharedEvents); $moduleManager->getEventManager()->attachAggregate($defaultListeners); $moduleManager->loadModules(); if (method_exists($moduleTestCaseClassname, 'setLocator')) { $config = $defaultListeners->getConfigListener()->getMergedConfig(); $di = new \Zend\Di\Di(); $di->instanceManager()->addTypePreference('Zend\\Di\\LocatorInterface', $di); if (isset($config['di'])) { $diConfig = new \Zend\Di\Config($config['di']); $diConfig->configure($di); } $routerDiConfig = new \Zend\Di\Config(array('definition' => array('class' => array('Zend\\Mvc\\Router\\RouteStackInterface' => array('instantiator' => array('Zend\\Mvc\\Router\\Http\\TreeRouteStack', 'factory')))))); $routerDiConfig->configure($di); call_user_func_array($moduleTestCaseClassname . '::setLocator', array($di)); } // When this is in global scope, PHPUnit catches exception: // Exception: Zend\Stdlib\PriorityQueue::serialize() must return a string or NULL unset($moduleManager, $sharedEvents);