amazon-web-services - 如何在快照测试期间将上下文传递给 cdk 应用程序?

标签 amazon-web-services testing jestjs aws-cloudformation aws-cdk

我正在尝试在 cdk 中对我的堆栈执行快照测试。该堆栈传递了一些由上下文获取的 Prop 。

在实际部署期间,我能够访问上下文,因为它确实被传递到我的堆栈[这里没有问题]

cdk deploy --all -c env=dev --require-approval never

在快照测试期间,我想为 dev、stg 和 prod 传递相同的上下文。

现在我已经对快照测试的上下文值进行了硬编码。有没有更好的方法来实现这一目标。现在我已经为开发环境硬编码了值,有没有一种方法可以像我们在实际部署期间那样以编程方式实现 stg 和 prod。

test('Snapshot', () => {

    const app = new cdk.App({
        context: {
            env: "dev",
            key1: "value1",
            key2: "value2",
            key3: {
                subkey: "subvalue3",
            },
        }
    });
    const env = app.node.tryGetContext("env");

    if (!env)
        throw new Error(
            "Context variable missing on CDK command. Pass in as `-c env=XXX`"
        );
    const key3 = app.node.tryGetContext("key3");
    const key1: string = app.node.tryGetContext(
        "key1"
    );

    const key2: string = app.node.tryGetContext(
        "key2"
    );
    const key3: string = app.node.tryGetContext(
        "key3"
    );
   

    const stack = new my-stack(app, 'test-stack', {
        Env: env,
        Key1: key1,
        key2: key2,
        key3: key3,
    })
    const template = Template.fromStack(stack).toJSON();
    expect(template).toMatchSnapshot();
});

最佳答案

我正在使用 python,但我确信您可以使用相同的概念。我读取 cdk.json 文件并通过代码更新它:

with open("cdk.json") as config:
    cdk_context = json.load(config)
    my_context = cdk_context['context']
    my_context.update({'lifecycle': 'dev'})
    print(my_context)

app = cdk.App(context=my_context)

关于amazon-web-services - 如何在快照测试期间将上下文传递给 cdk 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76037718/

相关文章:

ruby-on-rails-3 - 如何使用 RSpec 模拟有错误的模型

javascript - 使用 Jest 测试 ES6 类时出现问题

hadoop - 如何将内容同步到所有节点

php - 进行实时、可扩展的音频处理的最佳策略?

css - Cypress 测试伪 CSS 类 :before

javascript - onCleanUp() vs onComplete() vs afterLaunch()

amazon-web-services - AWS SAM 部署 : Error fork/exec/var/task/myfunction : no such file or directory: PathError

amazon-web-services - 对 AWS::EC2::Instance 资源的元数据更改强制 "Replace"更新行为?

javascript - 如何使用 Jest 单元测试触发 transitionend

unit-testing - 使用 jest 和 vue-test-utils2 在 vue3 typescript 单元测试中模拟 axios (已解决)