Есть ли способ сопоставить любое значение параметра в rspec-puppet

Я тестирую ресурс и хочу убедиться, что он имеет точное количество параметров, но один из них — require, и я не понял, как сопоставить его с with. Я проверяю правильность отношений, используя that_requires. Мой текущий тест выглядит так

context 'xldeploy_environment_member' do
  env = "Environments/#{company_short}/#{environment_short}/#{sn_environment}"
  name = "#{env}/#{website}"
  dict = "#{env}/dict.#{website}"
  infhost = "Infrastructure/IIS/#{hostname}"

  it { is_expected.to contain_xldeploy_environment_member(name).with({
    :id           => name,
    :ensure       => 'present',
    :env          => name,
    :dictionaries => [dict],
    :members      => ["#{infhost}/#{website}", infhost],
  }.merge($xldeploy_defaults))}

  it { is_expected.to contain_xldeploy_environment_member(name).that_requires(
    "Xldeploy_ci[#{name}]")
  }
end

но я хотел бы заменить with на only_with, так как with позволит добавлять дополнительные параметры без соответствующего теста. Если бы была проверка parameter_count, как есть проверка resource_count, я мог бы использовать это. Поддерживает ли rspec-puppet сопоставление регулярных выражений, чтобы я мог проверить наличие параметра? Меня не интересует фактический контент, так как он проверен that_requires.


person smcp    schedule 17.08.2017    source источник
comment
Я считаю, что вы можете привязать that_requires к цепи with. Попробуйте, а также посмотрите, сможете ли вы связать его с only_with, поскольку сопоставители метапараметров не должны охватывать стандартные цепочки with. Пара других замечаний: я не думаю, что вам нужен merge в этом коде, и он также использует неопределенную переменную (предполагая, что она, вероятно, определена над блоком context), и что этот тест проверяет жестко запрограммированное поведение, и вы увидит больше интересной добавленной стоимости от тестирования динамических событий ввода/вывода.   -  person Matt Schuchard    schedule 17.08.2017
comment
Спасибо, попробую цепочку. Это жестко закодировано, потому что это WIP.   -  person smcp    schedule 18.08.2017


Ответы (1)


Да, Rspec-puppet поддерживает регулярные выражения, и если вы хотите сказать «требовать чего-либо» в сочетании с only_with, вы можете написать:

  it {
    is_expected.to contain_foo('bar').only_with({
      'param1'  => 'val1',
      'param2'  => 'val2',
      'require' => //,
    })
  }
person Alex Harvey    schedule 18.08.2017