OrnoTest\ContainerTest::testInjectsRuntimeArgumentsAndInvokesMethods PHP Метод

testInjectsRuntimeArgumentsAndInvokesMethods() публичный Метод

    public function testInjectsRuntimeArgumentsAndInvokesMethods()
    {
        $c = new Container();
        $c->add('OrnoTest\\Assets\\Bar')->withArguments(['OrnoTest\\Assets\\Baz']);
        $c->add('closure1', function ($bar) use($c) {
            return $c->get('OrnoTest\\Assets\\Foo', [$bar]);
        })->withArgument('OrnoTest\\Assets\\Bar');
        $c->add('OrnoTest\\Assets\\Baz');
        $c->add('OrnoTest\\Assets\\Foo')->withArgument('OrnoTest\\Assets\\Bar')->withMethodCalls(['injectBaz' => ['OrnoTest\\Assets\\Baz']]);
        $runtimeBar = new \OrnoTest\Assets\Bar(new \OrnoTest\Assets\Baz());
        $foo = $c->get('OrnoTest\\Assets\\Foo', [$runtimeBar]);
        $this->assertInstanceOf('OrnoTest\\Assets\\Foo', $foo);
        $this->assertInstanceOf('OrnoTest\\Assets\\Bar', $foo->bar);
        $this->assertInstanceOf('OrnoTest\\Assets\\Baz', $foo->baz);
        $this->assertSame($foo->bar, $runtimeBar);
        $fooClosure = $c->get('closure1');
        $this->assertInstanceOf('OrnoTest\\Assets\\Foo', $fooClosure);
        $this->assertInstanceOf('OrnoTest\\Assets\\Bar', $fooClosure->bar);
    }
ContainerTest