Я знаю, что вы выбрали SAM cli для создания своих шаблонов, но я бы посоветовал вам перейти на Serverless (npm i serverless -g), поскольку они более продвинуты. Serverless - это инфраструктура, созданная инженерами и не имеющая облачного провайдера, подключенного к нему / зависимого от него, поэтому вы сможете легко переключаться с Azure на AWS из вашего шаблона.
Поскольку он поддерживается большим сообществом разработчиков, в фреймворке есть множество плагинов, включая автономный плагин без сервера, который позволит вам запускать ваш API локально, как если бы вы только что запускали node index.js
. Существуют также плагины, такие как «serverless-jest» или «serverless-mocha» для модульных тестов, но в итоге я использовал обычный интеграционный тест «Jest» (я использую пул пользователей cognito и мне нужно проверить токен аутентификации).
Если вы действительно хотите протестировать свой код архитектуры облачной информации, вы можете иметь JS-файл со своей функцией и запускать его с узлом локально, и вместо того, чтобы иметь код в своем шаблоне облачной информации, вам нужно будет заархивировать ip, загрузить на S3, а затем сообщите путь в вашем шаблоне.
Таким образом, я знаю, что вы спрашивали, как протестировать SAM без сервера, но, поскольку вы хотели бы иметь надлежащий процесс разработки (локальное выполнение, модульное тестирование, конвейер и т. Д.), Переключение на инфраструктуру без сервера было бы решением. Вы можете моделировать функции через узел, но это увеличит ваше ручное управление тем, что уже делает фреймворк.