AWS CDK Jest 单元测试资源有 DeletionPolicy
AWS CDK Jest Unit Test Resource Has DeletionPolicy
在 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"
});
您可以使用带参数的 haveResouce() ResourcePart.CompleteDefinition
示例中的片段
expect(stack).to(haveResource('AWS::CloudFormation::CustomResource', {
DeletionPolicy: 'Retain',
UpdateReplacePolicy: 'Retain',
}, ResourcePart.CompleteDefinition));
这是一个已确认适用于 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);
});
在 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"
});
您可以使用带参数的 haveResouce() ResourcePart.CompleteDefinition
示例中的片段
expect(stack).to(haveResource('AWS::CloudFormation::CustomResource', {
DeletionPolicy: 'Retain',
UpdateReplacePolicy: 'Retain',
}, ResourcePart.CompleteDefinition));
这是一个已确认适用于 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);
});