<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
matthiasnoback / symfony-dependency-injection-test example snippets
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase;
class MyExtensionTest extends AbstractExtensionTestCase
{
protected function getContainerExtensions(): array
{
return [
new MyExtension()
];
}
}
class MyExtension extends Extension
{
public function load(array $config, ContainerBuilder $container)
{
$loader = new XmlFileLoader($container, new FileLocator(__DIR__));
$loader->load('services.xml');
// maybe process the configuration values in $config, then:
$container->setParameter('parameter_name', 'some value');
}
}
class MyExtensionTest extends AbstractExtensionTestCase
{
/**
* @test
*/
public function after_loading_the_correct_parameter_has_been_set()
{
$this->load();
$this->assertContainerBuilderHasParameter('parameter_name', 'some value');
}
}
class MyExtensionTest extends AbstractExtensionTestCase
{
/**
* @test
*/
public function after_loading_the_correct_parameter_has_been_set()
{
$this->load(['my' => ['enabled' => 'false']);
...
}
}
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractCompilerPassTestCase;
class MyCompilerPassTest extends AbstractCompilerPassTestCase
{
protected function registerCompilerPass(ContainerBuilder $container): void
{
$container->addCompilerPass(new MyCompilerPass());
}
}
class MyCompilerPassTest extends AbstractCompilerPassTestCase
{
/**
* @test
*/
public function if_compiler_pass_collects_services_by_adding_method_calls_these_will_exist()
{
$collectingService = new Definition();
$this->setDefinition('collecting_service_id', $collectingService);
$collectedService = new Definition();
$collectedService->addTag('collect_with_method_calls');
$this->setDefinition('collected_service', $collectedService);
$this->compile();
$this->assertContainerBuilderHasServiceDefinitionWithMethodCall(
'collecting_service_id',
'add',
[
new Reference('collected_service')
]
);
}
}
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class MyCompilerPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
$definition = $container->getDefinition('some_service_id');
...
}
}
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class MyCompilerPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
if (!$container->hasDefinition('some_service_id')) {
return;
}
$definition = $container->getDefinition('some_service_id');
...
}
}
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionConfigurationTestCase;
class ConfigurationTest extends AbstractExtensionConfigurationTestCase
{
protected function getContainerExtension()
{
return new TwigExtension();
}
protected function getConfiguration()
{
return new Configuration();
}
}