В начале хочу сказать - я новичок в модульном тестировании в PHP (phpunit). В моем новом проекте (slim3 framework) я хотел бы протестировать свои контроллеры, например, LoginController.
Моя идея (в методе модульного тестирования)
- Создать экземпляр
LoginController
- Макет некоторых сервисов в контроллере (DI)
- Выполнить метод, который является ответом на запрос (в моем методе контроллеров
__invoke
)
Моя проблема связана с параметрами для метода __invoke
. В Slim3 вызываемый метод запроса имеет два первых параметра:
RequestInterface $request
и ResponseInterface $response
Как я могу создать эти параметры в своем классе модульного тестирования? Я искал несколько примеров для этой проблемы, но безуспешно.
Какие-либо предложения?
Я нашел код в тестах Slim3 для имитации запроса:
protected function requestFactory()
{
$uri = Uri::createFromString('https://example.com:443/foo/bar?abc=123');
$headers = new Headers();
$cookies = array(
'user' => 'john',
'id' => '123',
);
$env = Slim\Http\Environment::mock();
$serverParams = $env->all();
$body = new Body(fopen('php://temp', 'r+'));
$request = new Request('GET', $uri, $headers, $cookies, $serverParams, $body);
return $request;
}
Но я не уверен, что это хороший способ.
Спасибо за любую помощь