【问题标题】:AWS CDK Jest Unit Test Resource Has DeletionPolicyAWS CDK Jest 单元测试资源具有 DeletionPolicy
【发布时间】:2021-06-04 19:12:55
【问题描述】:

在 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"
});

【问题讨论】:

    标签: jestjs aws-cdk


    【解决方案1】:

    您可以使用以下示例 https://github.com/aws/aws-cdk/blob/775a0c930a680f8a52bb4a40084d07492f7f9fee/packages/%40aws-cdk/aws-cloudformation/test/test.resource.ts#L57

    你可以使用带参数ResourcePart.CompleteDefinition的haveResouce()

    示例中的 sn-p

          expect(stack).to(haveResource('AWS::CloudFormation::CustomResource', {
            DeletionPolicy: 'Retain',
            UpdateReplacePolicy: 'Retain',
          }, ResourcePart.CompleteDefinition));
    

    【讨论】:

      【解决方案2】:

      这是一个更新的 sn-p 确认在 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);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-02
        • 2021-10-05
        • 2021-01-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多