/** * @test * @author Robert Lemke <*****@*****.**> */ public function shutdownCallsTheShutdownMethodsOfAllObjectsInTheSingletonObjectsRegistry() { $className = 'SomeClass' . uniqid(); $mockObject1 = $this->getMock($className, array('shutdownObject')); $mockObject1->expects($this->once())->method('shutdownObject'); $mockObject2 = $this->getMock($className, array('prepareForSelfDestruction')); $mockObject2->expects($this->once())->method('prepareForSelfDestruction'); $shutdownObjects = array(spl_object_hash($mockObject1) => array($mockObject1, 'shutdownObject'), spl_object_hash($mockObject2) => array($mockObject2, 'prepareForSelfDestruction')); $objectManager = new \F3\FLOW3\Object\ObjectManager(); $objectManager->injectObjectBuilder($this->getMock('F3\\FLOW3\\Object\\ObjectBuilder')); $objectManager->injectObjectFactory($this->getMock('F3\\FLOW3\\Object\\ObjectFactoryInterface')); $objectManager->injectSingletonObjectsRegistry($this->getMock('F3\\FLOW3\\Object\\TransientRegistry')); $objectManager->injectReflectionService($this->getMock('F3\\FLOW3\\Reflection\\ReflectionService')); $shutdownObjectsReflection = new \ReflectionProperty($objectManager, 'shutdownObjects'); $shutdownObjectsReflection->setAccessible(TRUE); $shutdownObjectsReflection->setValue($objectManager, $shutdownObjects); $objectManager->shutdown(); }