protected function dispatch($path, $method = 'GET', $data = array(), $cookies = array()) { $container = $this->app->getContainer(); // seperate the path from the query string so we can set in the environment @(list($path, $queryString) = explode('?', $path)); // Prepare a mock environment $env = Environment::mock(array('REQUEST_URI' => $path, 'REQUEST_METHOD' => $method, 'QUERY_STRING' => is_null($queryString) ? '' : $queryString)); // Prepare request and response objects $uri = Uri::createFromEnvironment($env); $headers = Headers::createFromEnvironment($env); $cookies = $cookies; $serverParams = $env->all(); $body = new RequestBody(); // create request, and set params $req = new $container['request']($method, $uri, $headers, $cookies, $serverParams, $body); if (!empty($data)) { $req = $req->withParsedBody($data); } $res = new $container['response'](); // // Fix for body, but breaks POST params in tests - http://stackoverflow.com/questions/34823328/response-getbody-is-empty-when-testing-slim-3-routes-with-phpunit // $body = new RequestBody(); // if (!empty($data)) // $body->write(json_encode($data)); // // // create request, and set params // $req = new $container['request']($method, $uri, $headers, $cookies, $serverParams, $body); // $res = new $container['response'](); $this->headers = $headers; $this->request = $req; $this->response = call_user_func_array($this->app, array($req, $res)); }
protected function dispatch($path, $method = 'GET', $data = array()) { // Prepare a mock environment $env = Environment::mock(array('REQUEST_URI' => $path, 'REQUEST_METHOD' => $method)); // Prepare request and response objects $uri = Uri::createFromEnvironment($env); $headers = Headers::createFromEnvironment($env); $cookies = []; $serverParams = $env->all(); $body = new RequestBody(); $container = $this->app->getContainer(); // create request, and set params $req = new $container['request']($method, $uri, $headers, $cookies, $serverParams, $body); if (!empty($data)) { $req = $req->withParsedBody($data); } $res = new $container['response'](); $this->headers = $headers; $this->request = $req; $this->response = call_user_func_array($this->app, array($req, $res)); }