我刚接触CDK,我写了我的CDK,它已经部署好了,一切都很好,正如预期的那样,现在到了为我的CDK编写测试的有趣部分了。
这是我的CDK文件(rte-stack.ts):
import * as iam from '@aws-cdk/aws-iam';
export class RTEStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Read from secrets manager role
const lambdaReadFromASMRole = new iam.Role(this, 'lambdaReadFromASMRole', {
roleName: 'lambdaReadFromASMRole',
assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
managedPolicies: [
iam.ManagedPolicy.fromAwsManagedPolicyName("SecretsManagerReadWrite"),
]
});
}
}我写了一个简单的测试:
import * as assert from '@aws-cdk/assert';
import { SynthUtils } from '@aws-cdk/assert';
import * as cdk from '@aws-cdk/core';
import * as RTE from '../lib/rte-stack';
const { expect: expectCDK, haveResource } = assert;
test('Stack creates resources', () => {
const app = new cdk.App();
const stack = new RTE.RTEStack(app, 'MyTestStack', {
env: {
account: process.env.CDK_DEFAULT_ACCOUNT,
region: process.env.CDK_DEFAULT_REGION
}
});
expectCDK(stack).to(assert.countResources('AWS::IAM::Role', 1));
});但是当我尝试运行我的测试时,我得到:
● Stack creates resources
TypeError: Converting circular structure to JSON
--> starting at object with constructor 'CloudFormationStackArtifact'
| property 'assembly' -> object with constructor 'CloudAssembly'
| property 'artifacts' -> object with constructor 'Array'
--- index 0 closes the circle
at JSON.stringify (<anonymous>)

这是我在package.js中使用的版本
"devDependencies": {
"@aws-cdk/assert": "1.125.0",
"@types/jest": "27.0.2",
"@types/node": "10.17.27",
"jest": "27.0.5",
"ts-jest": "27.0.5",
"aws-cdk": "1.125.0",
"ts-node": "9.0.0",
"typescript": "3.9.7"
},
"dependencies": {
"@aws-cdk/aws-apigateway": "1.125.0",
"@aws-cdk/aws-ec2": "1.125.0",
"@aws-cdk/aws-iam": "1.125.0",
"@aws-cdk/aws-lambda-nodejs": "1.125.0",
"@aws-cdk/aws-rds": "1.125.0",
"@aws-cdk/core": "1.125.0",
"source-map-support": "0.5.20"
}有什么想法吗?
发布于 2021-10-12 10:43:47
在使用自定义构造时,我也看到了这个问题。看起来您还有一个名为RTEStack的自定义构造。
在我的例子中,我的自定义构造原来具有CDK v1.124.0的依赖项,而我编写使用自定义构造的测试的项目依赖于v1.125.0。通过确保他们使用相同版本的CDK (在我的情况下,我将两者都更新到1.127.0 )解决了这个问题。
发布于 2021-10-31 18:54:21
我也有同样的想法,在所有CDK库的版本之前删除^是有帮助的,但在我看来,这已经不是您的情况了
https://stackoverflow.com/questions/69437126
复制相似问题