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()); } }