setDefinition(InvoiceService::class, $definition); $renderers = [DocxRenderer::class]; foreach ($renderers as $renderer) { $container->register($renderer)->addTag(RendererInterface::class); } $numberGenerators = [DateNumberGenerator::class, ConfigurableNumberGenerator::class]; foreach ($numberGenerators as $numberGenerator) { $container->register($numberGenerator)->addTag(NumberGeneratorInterface::class); } $calculators = [DefaultCalculator::class, UserInvoiceCalculator::class, ShortInvoiceCalculator::class]; foreach ($calculators as $calculator) { $container->register($calculator)->addTag(CalculatorInterface::class); } $repositories = [TimesheetInvoiceItemRepository::class]; foreach ($repositories as $repository) { $container->register($repository)->addTag(InvoiceItemRepositoryInterface::class); } return $container; } public function testCallsAreAdded(): void { $container = $this->getContainer(); $sut = new InvoiceServiceCompilerPass(); $sut->process($container); $definition = $container->findDefinition(InvoiceService::class); $methods = $definition->getMethodCalls(); self::assertCount(7, $methods); self::assertTrue($definition->hasMethodCall('addRenderer')); self::assertTrue($definition->hasMethodCall('addNumberGenerator')); self::assertTrue($definition->hasMethodCall('addCalculator')); self::assertTrue($definition->hasMethodCall('addInvoiceItemRepository')); } }