public function doRequest($request) { // redirector should not exit $redirector = \Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); $redirector->setExit(false); // json helper should not exit $json = \Zend_Controller_Action_HelperBroker::getStaticHelper('json'); $json->suppressExit = true; $zendRequest = new \Zend_Controller_Request_HttpTestCase(); $zendRequest->setMethod($request->getMethod()); $zendRequest->setCookies($request->getCookies()); $zendRequest->setParams($request->getParameters()); // Sf2's BrowserKit does not distinguish between GET, POST, PUT etc., // so we set all parameters in ZF's request here to not break apps // relying on $request->getPost() $zendRequest->setPost($request->getParameters()); $zendRequest->setRawBody($request->getContent()); $zendRequest->setRequestUri(str_replace('http://localhost', '', $request->getUri())); $zendRequest->setHeaders($this->extractHeaders($request)); $_FILES = $this->remapFiles($request->getFiles()); $_SERVER = array_merge($_SERVER, $request->getServer()); $zendResponse = new \Zend_Controller_Response_HttpTestCase(); $this->front->setRequest($zendRequest)->setResponse($zendResponse); ob_start(); try { $this->bootstrap->run(); } catch (\Exception $e) { ob_end_clean(); throw $e; } ob_end_clean(); $this->zendRequest = $zendRequest; $response = new Response($zendResponse->getBody(), $zendResponse->getHttpResponseCode(), $this->formatResponseHeaders($zendResponse)); return $response; }