Example #1
0
 public function runAction($method, $actionName, array $customParams = [], array $session = [])
 {
     $controllerClass = $this->resolveControllerClass();
     $path = $this->ensureRouteExists($controllerClass, $actionName, $customParams);
     $response = new TestResponse();
     $this->parameters->reset();
     $this->setCustomRequestParams($this->parameters, $method, $customParams);
     $appClone = clone $this->application();
     $appRefl = new ReflectionClass(get_class($appClone));
     $response->setCookieJar($this->request->cookieJar());
     $this->request->resetUploadedFiles($customParams);
     foreach (['request', 'parameters', 'session', 'response'] as $propName) {
         $prop = $appRefl->getProperty($propName);
         $prop->setAccessible(true);
         $value = $propName == 'response' ? $response : $this->{$propName};
         $prop->setValue($appClone, $value);
     }
     $this->cookies = $response->cookieJar();
     $dispatcher = new ActionDispatch($appClone);
     $endPoint = $dispatcher->dispatch($method, $path);
     $this->controller = $endPoint->controller();
 }