You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DynamoDB TableV2时CDK中的Jest测试失败问题

解决AWS CDK中DynamoDB TableV2的Jest测试失败问题

问题场景

在AWS CDK中使用dynamodb.TableV2创建数据表后,运行Jest测试时出现失败:原本测试代码校验栈中AWS::DynamoDB::Table资源数量为1,但实际检测不到该类型资源。而改用旧版dynamodb.Table创建表时,测试可正常通过;将测试中的资源类型改为AWS::DynamoDB::TableV2后,测试也能正常运行。

原因分析

CDK的dynamodb.TableV2是对应DynamoDB新资源模型的构造类,它在CloudFormation中生成的资源类型是AWS::DynamoDB::TableV2,而非旧版Table对应的AWS::DynamoDB::Table。因此测试中如果仍用旧资源类型做校验,自然会出现不匹配的失败结果。

解决方案

修改Jest测试代码中的资源类型校验,将AWS::DynamoDB::Table替换为AWS::DynamoDB::TableV2即可。

示例代码

原失败测试代码

test('should create one DynamoDB Table', () => {
  const app = new cdk.App();
  const stack = new cdk.Stack(app, 'TestStack');
  
  // 用TableV2创建表的代码
  new dynamodb.TableV2(stack, 'MyTable', {
    partitionKey: { name: 'id', type: dynamodb.AttributeType.STRING },
  });

  // 校验旧资源类型,会失败
  expect(stack).toCountResources('AWS::DynamoDB::Table', 1);
});

修改后的成功测试代码

test('should create one DynamoDB TableV2', () => {
  const app = new cdk.App();
  const stack = new cdk.Stack(app, 'TestStack');
  
  new dynamodb.TableV2(stack, 'MyTable', {
    partitionKey: { name: 'id', type: dynamodb.AttributeType.STRING },
  });

  // 校验新资源类型,正常通过
  expect(stack).toCountResources('AWS::DynamoDB::TableV2', 1);
});

内容的提问来源于stack exchange,提问作者Khaled Abbas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:32:08