【发布时间】:2021-07-22 14:16:10
【问题描述】:
我正在尝试在部署后运行我的 e2e 测试,以便在出现任何故障时回滚。 我按照this blog中描述的说明进行操作
这是我的 lambda:
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 }
}
}
我的测试是用 typescript 编写的,我将 jest.config.js 和 tsconfig.json 上传到了无服务器应用程序 zip 文件。 无论我做什么,诸如描述、期望等的全局符号都无法识别:
找不到名称“描述”。您是否需要为测试运行器安装类型定义?尝试
npm i @types/jest或npm i @types/mocha,然后将jest或mocha添加到 tsconfig 中的 types 字段。
如何使用 aws lambda 运行测试?我唯一的选择是触发其他一些任务,例如 codebuild 来运行我的测试,或者将我的测试框架更改为 mocha。有没有更好的解决方案?
【问题讨论】:
-
不应该在 Lambda 之外运行这些端到端测试吗?例如,在您的 CI/CD 管道中?通常,您会部署 Lambda,然后在 CI/CD 管道中运行测试,验证结果并以某种形式处理结果。将这些东西与您的 Lambda 一起部署似乎是“错误”的方法。
-
错误似乎来自打字稿检查,您是否尝试安装
@types/jest类型?类型包将describe函数标记为可用
标签: typescript amazon-web-services aws-lambda serverless-framework aws-code-deploy