我正在尝试在 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/