#typescript #amazon-web-services #aws-lambda #serverless-framework #aws-code-deploy
Вопрос:
Я пытаюсь запустить свой тест e2e после развертывания, чтобы я мог выполнить откат в случае любого сбоя. Я следовал инструкции, описанной в этом блоге
Это моя лямбда:
export async function testLambda(event: APIGatewayEvent, context, callback) {
console.log('The first version!')
const response = {
statusCode: 200,
body: JSON.stringify({
message: 'The first version!'
})
}
return callback(null, response)
}
это мой почтовый крюк:
export async function postHook(event, context, callback) {
const deploymentId = event.DeploymentId;
const lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId;
console.log(`deploymentId: ${deploymentId} - lifecycleEventHookExecutionId: ${lifecycleEventHookExecutionId}`)
try {
const jest = require('jest');
require('ts-jest');
const options = {
projects: [__dirname],
silent: true,
};
await jest.runCLI(options, options.projects);
// update aws deployment for sucsses
} catch (err) {
// update aws deployment for failure
console.log(err);
return { statusCode: 500 }
}
}
мой тест написан на машинке, и я загрузил свой jest.config.js и tsconfig.json в zip-файл бессерверного приложения.
Независимо от того, что я делаю, глобальные символы шутки, такие как описание, ожидание и т. Д., Не распознаются:
Не удается найти имя «описать». Вам нужно установить определения типов для тестового запуска? Попробуйте
npm i @types/jest
илиnpm i @types/mocha
, а затем добавьтеjest
илиmocha
в поле типы в вашем tsconfig.
Как я могу запустить свой тест с помощью aws lambda? единственный выбор, который у меня есть, — это либо запустить какую-либо другую задачу, такую как сборка кода, для запуска моего теста, либо изменить мою тестовую платформу на mocha. есть ли какое-нибудь лучшее решение?
Комментарии:
1. Разве эти сквозные тесты не должны выполняться за пределами Лямбды? Например, в вашем конвейере CI/CD? Как правило, вы развертываете свои лямбды, затем запускаете тесты в конвейере CI/CD, проверяете результаты и обрабатываете их в той или иной форме. Развертывание этого материала вместе с вашей Лямбдой кажется «неправильным» подходом.
2. Ошибки, похоже, возникают из-за проверки машинописи, вы пытались установить
@types/jest
типы? Пакеты типов помечаютdescribe
функции как доступные
Ответ №1:
Jest обычно помещает функции описания, тестирования и другие функции в глобальный контекст. Когда вы запускаете его программно, он не может этого сделать, поэтому вам необходимо явно импортировать эти функции перед использованием.
import { describe, test} from '@jest/globals';