public function testCanCallSettersForDependecyWhenListOfUsed() { $injector = new Phemto(); $injector->whenCreating(SomeClassNeedArray::class)->forVariable('dependencies')->willUse(new ListOf(new Reused(DependencyWithSetter::class))); $injector->forType(DependencyWithSetter::class)->call('setProperty'); $object = $injector->create(SomeClassNeedArray::class); $this->assertInstanceOf(NotWithoutMe::class, $object->dependencies[0]->property); }
function testSetterInjectionStopsAtFirstMissingArgument() { $injector = new Phemto(); $injector->forVariable('maybe')->willUse('phemto\\acceptance\\MaybeThis'); $injector->forVariable('unlikely')->willUse('phemto\\acceptance\\MaybeThis'); $injector->forType('phemto\\acceptance\\OptionalArgumentsInSetter')->call('readyToGo'); $expected = new OptionalArgumentsInSetter(); $expected->readyToGo(new MaybeThis(), null, new MaybeThis()); $this->assertEquals($injector->create('phemto\\acceptance\\OptionalArgumentsInSetter'), $expected); }
public function testInstantiateBySettersWhenGraphIsUsed() { $injector = new Phemto(); $injector->whenCreating(ThirdClass::class)->forVariable('dependency')->willUse(new Graph(WithSetterByVariable::class, 'graph1')); $injector->forType(WithSetterByVariable::class)->call('setProperty'); $injector->whenCreating(WithSetterByVariable::class, 'graph1')->forVariable('property')->useString('value for graph1'); $object = $injector->create(ThirdClass::class); $this->assertEquals('value for graph1', $object->dependency->property); }