В настоящее время я занят проектом PSR-7 с ответами и запросами.
В настоящее время мы настраиваем приложение в нашем index.php, выполняя что-то вроде:
$app = new Application();
$app->loadConfiguration(
'../config/global.yml',
);
// Should return the response?
$app->run((new ServerRequestFactory())->createServerRequestFromGlobals());
Здесь метод run также вызывает emit
метод, который отвечает за отправку заголовков и печать тела ответа.
Запрос и ответ теперь связаны друг с другом одним вызовом, что затрудняет тестирование, поскольку вы не хотите отправлять ответ с заголовками прямо в PHPUnit.
Я удалил emit
вызов в цепочке метода run и добавил это в индекс после вызова метода run:
// Send the response.
$app->send();
Таким образом они разъединяются, но недостатком является то, что теперь я должен хранить экземпляр моего ответа в свойстве response внутри моего класса Application.php ($ app).
Я хочу переместить экземпляр ответа в сам класс ответа, но мои коллеги считают, что класс никогда не должен содержать экземпляр самого себя. Но когда я смотрю на фреймворки, это случается довольно часто. Прав ли он по этому поводу?
Какие аргументы я могу привести, чтобы отделить мой запрос и ответ от более простого тестирования?
Я довольно новичок в модульном тестировании, один из аргументов, который я уже слышал, заключается в том, что я все равно не должен тестировать полное приложение, а скорее отдельные компоненты и, следовательно, не должен беспокоиться о разделении запроса и ответа.
Задача ещё не решена.
Других решений пока нет …