Я создал оболочку для запроса Slim в своем приложении, чтобы иметь возможность создавать некоторые пользовательские методы для объекта Request.
class Request extends SlimRequest
{
/**
* Get authorization token.
*
* @return null|string
*/
public function getAuthToken(): ?string
{
return $this->getHeaderLine('FOOBAR-TOKEN');
}
/**
* Retrieves a route parameter.
*
* @param string $name
* @return string|null
*/
public function getRouteParam(string $name): ?string
{
return $this->getRoute()->getArgument($name);
}
/**
* Retrieves the route instance.
*
* @return Route
*/
public function getRoute(): Route
{
return $this->getAttribute('route');
}
}
Моя проблема возникает при попытке создать модульный тест для этого класса. Я тестировал запросы, используя встроенные макеты Slims. Первой функцией я добавил заголовок к запросу, который можно увидеть ниже, но я не могу понять, как добавить объект Route к запросу
$request = Request::createFromEnvironment(Environment::mock());
$request = $request->withHeader('FOOBAR-TOKEN', 'superSafeExampleToken');
Я пытался создать запрос с параметрами запроса, но $ this-> getAttribute ('route'); возвращает ноль
$requestOptions = [
'REQUEST_METHOD' => 'POST,
'REQUEST_URI' => '/foo/bar',
'QUERY_STRING' => http_build_query($requestParameters),
];
$environment = Environment::mock($requestOptions);