我正尝试在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();
});
1条答案
按热度按时间xwbd5t1u1#
我使用Python,但我相信你可以使用相同的概念。我读取cdk.json文件并通过代码更新它: