Есть ли способ использовать настраиваемый факт при использовании rspec? Мой модуль работает нормально, и настраиваемый факт существует и работает должным образом, когда я запускаю марионетку на моем агенте, но когда я пытаюсь использовать тот же факт в rspec, я получаю следующую ошибку:
Failure/Error: it { should contain_class('zabbixconfig') }
Puppet::PreformattedError:
Evaluation Error: Unknown variable: 'pskkey_generate'. at /etc/puppetlabs/code/environments/production/modules/zabbixconfig/spec/fixtures/modules/zabbixconfig/manifests/init.pp:46:13 on node puppet-master-poc
В pskkey_generate
в приведенной выше ошибке - это мой собственный факт, а вот фрагмент моего класса, включая его:
$pskkey = $pskkey_generate
Кто-нибудь знает, как заставить rspec распознавать мой собственный факт? Любая помощь будет оценена.
В твоем spec/spec_helper.rb
файл вы можете добавить следующее:
RSpec.configure do |c|
c.default_facts = { :pskkey_generate => '...' }
end
В вашем случае, вероятно, лучше всего жестко закодировать известное значение вашего факта в default_facts, как предлагает bodgit. В других случаях, когда факт исходит от стороннего модуля, раздражает необходимость добавлять насмешку, чтобы провести реалистичные тесты использования вашего кода.
Я добавил вверху spec/spec_helper.rb
:
if ENV.include? 'MODULEPATH'
top_path = File.dirname(File.dirname(__FILE__))
ENV['FACTERLIB'] = ENV['MODULEPATH'].split(/:/).map do |p|
p.start_with?('/') ? p : File.join(top_path, p)
end.map do |p|
Dir.glob(File.join(p, '*/lib/facter'))
end.flatten.join(':')
end
Когда библиотека Facter загружается, она учитывает переменную среды FACTERLIB и оценивает все настраиваемые факты, предоставленные модулями в вашей среде Puppet.
Типичное значение для MODULEPATH
это «дизайн: модули» при тестировании сред.