【问题标题】:How to run jest using AWS Lambda?如何使用 AWS Lambda 开玩笑?
【发布时间】: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/jestnpm i @types/mocha,然后将 jestmocha 添加到 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


【解决方案1】:

Jest 通常将 describe、test 和其他函数放入全局上下文中。当您以编程方式启动它时,它无法执行此操作,因此您必须在使用前显式导入这些函数。

import { describe, test} from '@jest/globals';

【讨论】:

    猜你喜欢
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    相关资源
    最近更新 更多