[DI] Fixed wrong factory method in exception
This commit is contained in:
parent
34c8a8b7ae
commit
922885c892
@ -49,6 +49,7 @@ class ResolveNamedArgumentsPass extends AbstractRecursivePass
|
|||||||
if (null === $parameters) {
|
if (null === $parameters) {
|
||||||
$r = $this->getReflectionMethod($value, $method);
|
$r = $this->getReflectionMethod($value, $method);
|
||||||
$class = $r instanceof \ReflectionMethod ? $r->class : $this->currentId;
|
$class = $r instanceof \ReflectionMethod ? $r->class : $this->currentId;
|
||||||
|
$method = $r->getName();
|
||||||
$parameters = $r->getParameters();
|
$parameters = $r->getParameters();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,9 +16,11 @@ use Symfony\Component\DependencyInjection\Compiler\ResolveNamedArgumentsPass;
|
|||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||||
use Symfony\Component\DependencyInjection\Reference;
|
use Symfony\Component\DependencyInjection\Reference;
|
||||||
use Symfony\Component\DependencyInjection\Tests\Fixtures\CaseSensitiveClass;
|
use Symfony\Component\DependencyInjection\Tests\Fixtures\CaseSensitiveClass;
|
||||||
|
use Symfony\Component\DependencyInjection\Tests\Fixtures\FactoryDummy;
|
||||||
use Symfony\Component\DependencyInjection\Tests\Fixtures\NamedArgumentsDummy;
|
use Symfony\Component\DependencyInjection\Tests\Fixtures\NamedArgumentsDummy;
|
||||||
use Symfony\Component\DependencyInjection\Tests\Fixtures\NamedArgumentsVariadicsDummy;
|
use Symfony\Component\DependencyInjection\Tests\Fixtures\NamedArgumentsVariadicsDummy;
|
||||||
use Symfony\Component\DependencyInjection\Tests\Fixtures\SimilarArgumentsDummy;
|
use Symfony\Component\DependencyInjection\Tests\Fixtures\SimilarArgumentsDummy;
|
||||||
|
use Symfony\Component\DependencyInjection\Tests\Fixtures\TestDefinition1;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Kévin Dunglas <dunglas@gmail.com>
|
* @author Kévin Dunglas <dunglas@gmail.com>
|
||||||
@ -103,6 +105,7 @@ class ResolveNamedArgumentsPassTest extends TestCase
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @expectedException \Symfony\Component\DependencyInjection\Exception\InvalidArgumentException
|
* @expectedException \Symfony\Component\DependencyInjection\Exception\InvalidArgumentException
|
||||||
|
* @expectedExceptionMessage Invalid service "Symfony\Component\DependencyInjection\Tests\Fixtures\NamedArgumentsDummy": method "__construct()" has no argument named "$notFound". Check your service definition.
|
||||||
*/
|
*/
|
||||||
public function testArgumentNotFound()
|
public function testArgumentNotFound()
|
||||||
{
|
{
|
||||||
@ -115,6 +118,24 @@ class ResolveNamedArgumentsPassTest extends TestCase
|
|||||||
$pass->process($container);
|
$pass->process($container);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \Symfony\Component\DependencyInjection\Exception\InvalidArgumentException
|
||||||
|
* @expectedExceptionMessage Invalid service "Symfony\Component\DependencyInjection\Tests\Fixtures\TestDefinition1": method "Symfony\Component\DependencyInjection\Tests\Fixtures\FactoryDummy::create()" has no argument named "$notFound". Check your service definition.
|
||||||
|
*/
|
||||||
|
public function testCorrectMethodReportedInException()
|
||||||
|
{
|
||||||
|
$container = new ContainerBuilder();
|
||||||
|
|
||||||
|
$container->register(FactoryDummy::class, FactoryDummy::class);
|
||||||
|
|
||||||
|
$definition = $container->register(TestDefinition1::class, TestDefinition1::class);
|
||||||
|
$definition->setFactory(array(FactoryDummy::class, 'create'));
|
||||||
|
$definition->setArguments(array('$notFound' => '123'));
|
||||||
|
|
||||||
|
$pass = new ResolveNamedArgumentsPass();
|
||||||
|
$pass->process($container);
|
||||||
|
}
|
||||||
|
|
||||||
public function testTypedArgument()
|
public function testTypedArgument()
|
||||||
{
|
{
|
||||||
$container = new ContainerBuilder();
|
$container = new ContainerBuilder();
|
||||||
|
Reference in New Issue
Block a user