unit-testing - 在CDK测试中,toHaveResource和toHaveResourceLike有什么区别?

标签 unit-testing jestjs aws-cdk

CDK fine-grained construct tests , 有什么区别

expect(...).toHaveResource(...)

expect(...).toHaveResourceLike(...)

来自 @aws-cdk/assert/jest 模块?

最佳答案

根据代码herehere唯一的区别是 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/

相关文章:

css - 我可以在响应式设计中测试视觉回归吗?

c++ - GMock 死亡案例 - 模拟函数未被调用

javascript - 如何测试抛出异常?

typescript - 在将 aws cdk 与 appsync 结合使用时,如何向 graphql 架构添加突变并防止部署失败?

amazon-web-services - 在 CDK 中配置 lambda 并发

java - 模拟对象并将它们分配给方法中的实例变量和静态变量

node.js - 测试 sails Controller

javascript - 开 Jest : Mocking files with different names

reactjs - Jest 和 React Native : How to mock AccessibilityInfo

amazon-web-services - 在 AWS Secrets Manager 中创建 key