Вопрос: могу ли я протестировать express приложение не запуская http сервер?
Гуглил “how to test express app”, очень много примеров на связке mocha + chai + chai-http.
Однако, при внимательном изучении, обнаружил что chai-http под капотом быстренько создаётся сервер (звпускает `.listen()`), а по окончании тест останавливает сервер (.close()).
Цитата из документации: (
https://www.chaijs.com/plugins/chai-http/)You may use a function (such as an express or connect app) or a node.js http(s) server as the foundation for your request. If the server is not running, chai-http will find a suitable port to listen on for a given test.
When passing an app to request; it will automatically open the server for incoming requests (by calling listen()) and, once a request has been made the server will automatically shut down (by calling .close()).
Вопрос возник из моего PHP-бэкграунда: там для тестирования приложения обычно не запускают реальный HTTP сервер слушающий порт, ибо Symfony/Laravel/... приложению можно подсунуть заранее сформированный stub request, получить response и проверить его содержимое, при этом tcp стек никак не задействован, нет подкапотного .listen() / .close(). Это ощущается более надёжным, т.к. я хочу протестировать именно роутинг и хендлеры ручек своего приложения, не вовлекая сетевой стек и реальный http сервер.
Есть ли в этом желании смысл, практикуется ли такое с express приложениями? Или поднятие http сервера для тестов express приложения нормальная практика и не стоит беспокоиться, ибо http сервер “просто работает” и нет никаких проблем с его запуском в тестах?