在 AWS CDK 中,我可以编写 Jest 单元测试来测试资源是否具有特定属性。但是如何测试不是属性的资源 DeletionPolicy 值?
cdk.out/example.template.json(简化版)
"AppsUserPool8FD9D0C0": {
"Type": "AWS::Cognito::UserPool",
"Properties": {
"UserPoolName": "test",
...
},
"UpdateReplacePolicy": "Retain",
"DeletionPolicy": "Retain",
"Metadata": {}
}
属性的 Jest 单元测试通过(简化)
expect(stack).toHaveResourceLike('AWS::Cognito::UserPool', {
"UserPoolName": "test"
});
DeletionPolicy 的 Jest 单元测试失败(简化)
expect(stack).toHaveResourceLike('AWS::Cognito::UserPool', {
"DeletionPolicy": "Retain"
});
答案 0 :(得分:0)
您可以使用带有参数 ResourcePart.CompleteDefinition
的 haveResouce()
示例中的片段
expect(stack).to(haveResource('AWS::CloudFormation::CustomResource', {
DeletionPolicy: 'Retain',
UpdateReplacePolicy: 'Retain',
}, ResourcePart.CompleteDefinition));
答案 1 :(得分:0)
这是一个更新的片段,确认在 CDK 版本上工作:1.107.0
import { ResourcePart } from '@aws-cdk/assert';
test('stack has correct policies', async () => {
expect(stack).toHaveResource('AWS::Cognito::UserPool', {
DeletionPolicy: 'Retain',
UpdateReplacePolicy: 'Retain',
}, ResourcePart.CompleteDefinition);
});