Jest.js 如何在快照测试期间将上下文传递到cdk应用程序?

6pp0gazn  于 2023-09-28  发布在  Jest
关注(0)|答案(1)|浏览(107)

我正尝试在cdk中为我的堆栈执行快照测试。这个堆栈传递了一些由上下文获取的属性。
在实际部署过程中,我能够访问上下文,因为它确实传递给了我的堆栈**[这里没有问题]**。

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();
});
xwbd5t1u

xwbd5t1u1#

我使用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)

相关问题