【问题标题】:Simple CDK Testing Failing简单的 CDK 测试失败
【发布时间】:2026-01-03 23:35:01
【问题描述】:

这是我的设置 //bin

#!/usr/bin/env node
import * as cdk from 'aws-cdk-lib';
import {Testing} from '../lib/index';

const app = new cdk.App();
new Testing(app, 'Testing');

//库

import {Duration, Stack, StackProps} from 'aws-cdk-lib'
export class Testing extends Stack {

  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    // Define construct contents here

    // example resource
    const queue = new sqs.Queue(this, 'TestingQueue', {
      visibilityTimeout: Duration.seconds(300)
    });
  }
}

//测试

import {Stack} from 'aws-cdk-lib/core';
import sqs = require ('../lib/index');
import'@aws-cdk/assert/jest'
test('SQS Queue Created', () => {
    const stack = new Stack();
    new sqs.Testing(stack, 'sqs');
    expect(stack).toHaveResource('AWS::SQS::Queue')
});

//npm 包

  "devDependencies": {
    "@types/jest": "^26.0.10",
    "@types/node": "10.17.27",
    "aws-cdk-lib": "2.1.0",
    "constructs": "^10.0.0",
    "jest": "^26.4.2",
    "ts-jest": "^26.2.0",
    "typescript": "~3.9.7"
  },
  "peerDependencies": {
    "@aws-cdk/assert": "^2.1.0",
    "aws-cdk-lib": "2.1.0",
    "constructs": "^10.0.0"
  },
  "jest": {
    "moduleFileExtensions": [
      "js"
    ]
  }

我在运行时得到这个: npm run build; npm 运行测试。 None of 0 resources matches resource 'AWS::SQS::Queue' with { "$anything": true }.

我不明白??? 这应该是直截了当的。我可以在 cdk.out 中看到资源,堆栈综合,堆栈部署。

它只发生在细粒度的断言中。快照有效。

【问题讨论】:

    标签: amazon-web-services aws-cdk


    【解决方案1】:

    您正在对空的stack 进行断言。改为断言Testing

    test('SQS Queue Created', () => {
        const stack = new Stack();  // stack is empty, has no queue
        const iHaveAQueue = new sqs.Testing(stack, 'sqs');
        expect(stack).toHaveResource('AWS::SQS::Queue')  // will fail
        
        expect(iHaveAQueue).toHaveResource('AWS::SQS::Queue') // will pass
    });
    

    【讨论】:

    • 谢谢。最终设法做到了