createMock(Container::class); $injectableFactory = new InjectableFactory($container); $bindingData = new BindingData(); $binder = new Binder($bindingData); $instance = $this->createMock(SomeInterface::class); $binder->bindInstance(SomeInterface::class, $instance); $obj = $injectableFactory->createWithBinding(SomeClass::class, new BindingContainer($bindingData)); $this->assertNotNull($obj); $this->assertSame($instance, $obj->get()); } public function testCreateWithBinding2(): void { $container = $this->createMock(Container::class); $injectableFactory = new InjectableFactory($container); $bindingData = new BindingData(); $binder = new Binder($bindingData); $binder ->bindImplementation(SomeInterface1::class, SomeClass1::class) ->bindImplementation(SomeInterface2::class, SomeClass2::class); $obj = $injectableFactory->createWithBinding(SomeClass0::class, new BindingContainer($bindingData)); $this->assertNotNull($obj); } public function testCreateResolved1(): void { $container = $this->createMock(Container::class); $bindingContainer = BindingContainerBuilder::create() ->bindImplementation(SomeInterface::class, SomeImplementation::class) ->build(); $injectableFactory = new InjectableFactory($container, $bindingContainer); $obj = $injectableFactory->createResolved(SomeInterface::class); $this->assertInstanceOf(SomeImplementation::class, $obj); } public function testCreateResolved2(): void { $container = $this->createMock(Container::class); $bindingContainer = BindingContainerBuilder::create()->build(); $injectableFactory = new InjectableFactory($container, $bindingContainer); $bindingContainer1 = BindingContainerBuilder::create()->build(); $obj = $injectableFactory->createResolved(SomeImplementation::class, $bindingContainer1); $this->assertInstanceOf(SomeImplementation::class, $obj); } }