Я тестирую ресурс и хочу убедиться, что он имеет точное количество параметров, но один из них — 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
.
that_requires
к цепиwith
. Попробуйте, а также посмотрите, сможете ли вы связать его сonly_with
, поскольку сопоставители метапараметров не должны охватывать стандартные цепочкиwith
. Пара других замечаний: я не думаю, что вам нуженmerge
в этом коде, и он также использует неопределенную переменную (предполагая, что она, вероятно, определена над блокомcontext
), и что этот тест проверяет жестко запрограммированное поведение, и вы увидит больше интересной добавленной стоимости от тестирования динамических событий ввода/вывода. - person Matt Schuchard   schedule 17.08.2017