在CDK测试中,toHaveResource和toHaveResourceLike有什么区别?
In CDK testing, what is the difference between toHaveResource and toHaveResourceLike?
与CDK fine-grained construct tests有什么区别
expect(...).toHaveResource(...)
和
expect(...).toHaveResourceLike(...)
来自 @aws-cdk/assert/jest
模块?
根据代码 here and here 唯一的区别是 toHaveResource
要求传递的键的值必须完全匹配,而在 toHaveResourceLike
中实际值可以是引用的超集值。换句话说,如果你试图断言某些 属性 的值,它本身就是一个对象,而你只想断言该对象的子集,那么你应该使用 toHaveResourceLike
.
例如,假设您正在尝试断言您的 S3 存储桶资源具有 PublicAccessBlockConfiguration
属性,其中 BlockPublicPolicy
设置为 true。
你可以这样写:
test("has public access restricted", () => {
expect(stack).toHaveResource("AWS::S3::Bucket", {
PublicAccessBlockConfiguration: {
BlockPublicPolicy: true,
},
});
});
但这会失败,因为 PublicAccessBlockConfiguration
也有其他子属性,例如 BlockPublicAcls
。但是如果你把这里的toHaveResource
改成toHaveResourceLike
那么就成功了
与CDK fine-grained construct tests有什么区别
expect(...).toHaveResource(...)
和
expect(...).toHaveResourceLike(...)
来自 @aws-cdk/assert/jest
模块?
根据代码 here and here 唯一的区别是 toHaveResource
要求传递的键的值必须完全匹配,而在 toHaveResourceLike
中实际值可以是引用的超集值。换句话说,如果你试图断言某些 属性 的值,它本身就是一个对象,而你只想断言该对象的子集,那么你应该使用 toHaveResourceLike
.
例如,假设您正在尝试断言您的 S3 存储桶资源具有 PublicAccessBlockConfiguration
属性,其中 BlockPublicPolicy
设置为 true。
你可以这样写:
test("has public access restricted", () => {
expect(stack).toHaveResource("AWS::S3::Bucket", {
PublicAccessBlockConfiguration: {
BlockPublicPolicy: true,
},
});
});
但这会失败,因为 PublicAccessBlockConfiguration
也有其他子属性,例如 BlockPublicAcls
。但是如果你把这里的toHaveResource
改成toHaveResourceLike
那么就成功了