在 CDK fine-grained construct tests , 有什么区别
expect(...).toHaveResource(...)
和
expect(...).toHaveResourceLike(...)
来自 @aws-cdk/assert/jest
模块?
最佳答案
根据代码here和 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
就可以成功了。
关于unit-testing - 在CDK测试中,toHaveResource和toHaveResourceLike有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64362558/