[HttpKernel] added unit tests for previous merge

This commit is contained in:
Fabien Potencier 2011-11-24 08:39:49 +01:00
parent 61e0bdebf8
commit 7b1dda84b9
2 changed files with 16 additions and 8 deletions

View File

@ -95,13 +95,9 @@ class ControllerResolver implements ControllerResolverInterface
{
if (is_array($controller)) {
$r = new \ReflectionMethod($controller[0], $controller[1]);
} elseif (is_object($controller)) {
if ($controller instanceof \Closure) {
$r = new \ReflectionFunction($controller);
} else {
$r = new \ReflectionObject($controller);
$r = $r->getMethod('__invoke');
}
} elseif (is_object($controller) && !$controller instanceof \Closure) {
$r = new \ReflectionObject($controller);
$r = $r->getMethod('__invoke');
} else {
$r = new \ReflectionFunction($controller);
}

View File

@ -102,6 +102,18 @@ class ControllerResolverTest extends \PHPUnit_Framework_TestCase
$controller = function ($foo) {};
$this->assertEquals(array('foo'), $resolver->getArguments($request, $controller));
$request = Request::create('/');
$request->attributes->set('foo', 'foo');
$controller = function ($foo, $bar = 'bar') {};
$this->assertEquals(array('foo', 'bar'), $resolver->getArguments($request, $controller));
$request = Request::create('/');
$request->attributes->set('foo', 'foo');
$controller = new self();
$this->assertEquals(array('foo', null), $resolver->getArguments($request, $controller));
$request->attributes->set('bar', 'bar');
$this->assertEquals(array('foo', 'bar'), $resolver->getArguments($request, $controller));
$request = Request::create('/');
$request->attributes->set('foo', 'foo');
$request->attributes->set('foobar', 'foobar');
@ -119,7 +131,7 @@ class ControllerResolverTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(array($request), $resolver->getArguments($request, $controller), '->getArguments() injects the request');
}
public function __invoke()
public function __invoke($foo, $bar = null)
{
}