首页 > 解决方案 > 在哈希中断言一些键/值对

问题描述

我有一个定义,它接受一个哈希:

Hash[String, Variant[String,Integer,Undef]] $property_additions;

我可以使用以下 rspec 测试此属性

    it { is_expected.to contain_my__define('instance-name').with_property_additions({
      'my_first_property' => 'my_first_value',
      'my_second_property' => 'my_second_value',
      ...,
      ...,
    })}

这将测试哈希是否包含列出的值并且仅包含列出的值。为了使用它,我需要在这里列出哈希中的所有键/值对。

我的问题是,我如何断言某些属性是在没有指定哈希中的所有属性的情况下设置的?

简单地说,我正在寻找一些 rspec 匹配器,例如“with_key_value_pairs_included({...})”。

标签: rspecpuppet

解决方案


我认为被测实体是您希望声明的类My::Define[instance-name],而不是My::Define定义的类型本身。如果是后者,那么允许参数值与您之前指定的值有任何不同都是没有意义的。

我的问题是,我如何断言某些属性是在没有指定哈希中的所有属性的情况下设置的?

如果我正确理解了这个问题,那么这是一件合理的事情,但 rspec-puppet 并没有为此做出规定。我不能完全排除您可以传递某个自定义Hash子类的参数的可能性,该参数以某种方式使rspec-puppet 的参数检查,按照您的想法工作,但即使您设法使其工作,它也会很复杂且易碎。


推荐阅读