Parcourir la source

[HttpKernel] added unit tests for previous merge

Fabien Potencier il y a 13 ans
Parent
commit
7b1dda84b9

+ 3 - 7
src/Symfony/Component/HttpKernel/Controller/ControllerResolver.php

@@ -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);
         }

+ 13 - 1
tests/Symfony/Tests/Component/HttpKernel/Controller/ControllerResolverTest.php

@@ -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)
     {
     }