| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?php
- namespace Test\Michel\DependencyInjection;
- use Michel\DependencyInjection\Container;
- use Michel\DependencyInjection\Exception\ContainerException;
- use Michel\DependencyInjection\ReflectionResolver;
- use Michel\UniTester\TestCase;
- use Test\Michel\DependencyInjection\TestClass\Database;
- use Test\Michel\DependencyInjection\TestClass\LazyService;
- use Test\Michel\DependencyInjection\TestClass\Mailer;
- use Test\Michel\DependencyInjection\TestClass\Parameters;
- /**
- * Class AutoWireTest
- * @package Test\Michel\DependencyInjection
- */
- class AutoWireTest extends TestCase {
- protected function setUp(): void
- {
- // TODO: Implement setUp() method.
- }
- protected function tearDown(): void
- {
- // TODO: Implement tearDown() method.
- }
- protected function execute(): void
- {
- $this->testAutoWire();
- $this->testAutoWireDefaultParameter();
- $this->testAutoWireInverse();
- }
- public function testAutoWire()
- {
- $container = new Container([], new ReflectionResolver());
- $this->assertTrue($container->has(LazyService::class));
- $this->assertTrue($container->has(Database::class));
- $database = $container->get(Database::class);
- /**
- * @var LazyService $service
- */
- $service = $container->get(LazyService::class);
- $this->assertInstanceOf(LazyService::class, $service);
- $this->assertInstanceOf(Database::class, $database);
- $this->assertStrictEquals($database, $service->getDatabase());
- }
- public function testAutoWireDefaultParameter()
- {
- $container = new Container([], new ReflectionResolver());
- $this->assertInstanceOf(Parameters::class, $container->get(Parameters::class));
- $this->expectException(ContainerException::class, function () use ($container) {
- $container->get(Mailer::class);
- });
- }
- public function testAutoWireInverse()
- {
- $container = new Container([], new ReflectionResolver());
- /**
- * @var LazyService $service
- */
- $service = $container->get(LazyService::class);
- $this->assertStrictEquals($container->get(Database::class), $service->getDatabase());
- }
- }
|