Блок управления тестом в slim3

Прежде всего, я хотел бы сказать - я новичок в модульном тестировании в PHP (phpunit). В моем новом проекте (фреймворк slim3) я хотел бы протестировать свои контроллеры, например 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;
}

Но я не уверен, что это хороший способ.

Спасибо за любую помощь

Ответы на вопрос(1)

Ваш ответ на вопрос