/** * @covers ::build * @dataProvider loadedServicesProvider */ public function testLoadedServices(BundleInterface $bundle, array $expected_service_definitions) { $container = new ContainerBuilder(); $bundle->build($container); $definitions = $container->getDefinitions(); foreach ($definitions as $id => $def) { /* @var $def \Symfony\Component\DependencyInjection\Definition */ $class = $def->getClass(); $expected_service_definitions_count = count($expected_service_definitions); for ($i = 0; $i < $expected_service_definitions_count; $i++) { if ($id === $expected_service_definitions[$i]) { unset($expected_service_definitions[$i]); break; } } // reset indice $expected_service_definitions = array_values($expected_service_definitions); // found a resource we didn't expect if (count($expected_service_definitions) === $expected_service_definitions_count) { $this->fail('Test did not expect service definition to be loaded: ' . $id . ' with class ' . $class); } // test this later because fixing this failure can lead to the previous if (!class_exists($class)) { $this->fail(sprintf('Could not load class %s for definition %s', $class, $id)); } } $this->assertEmpty($expected_service_definitions, 'Service definition(s) missing: ' . implode(',', $expected_service_definitions)); }