В поваренной книге я определил класс Rds :: Checks, который разделяет методы для создания команд unix для ресурсов bash/execute и Guard. Образец библиотеки файлов/checks.rb является:Как требовать библиотеки кулинарной книги в тестах на кухне кухни
module Rds
class Checks
class << self
def ssh_config_entry_present host, config_file, key_name
"cat #{config_file} | grep #{key_name}"
end
def redmine_migrated user, pass, name
"if [ `mysql -u#{user} -p#{pass} -e 'select count(id) FROM #{name}.users;' | sed -n '2 p'` -gt 0 ]; then echo '0'; else echo '1'; fi"
end
end
end
end
На поставщиков LWPR, рецепты и chefspec тестов файл загружается без проблем, но когда я использую его в serverspec через kitchen verify
это вызовет ошибку.
[email protected]:~/cookbooks/rds$ cat test/integration/install/serverspec/localhost/install_spec.rb
...
it 'do migrations' do
cmd = Rds::Checks.redmine_migrated
expect(command(cmd).stdout).to eq 0
end
...
[email protected]:~/cookbooks/rds$ kitchen verify
...
NameError:
uninitialized constant Rds
Я действительно хотел бы держать методы, которые строят команды Баша/Sh на общем уровне, так что я могу проверить его отдельно и не беспокоиться о них на единицу и интеграционных тестах
может быть решением для обмена этой библиотекой как драгоценного камня и добавления их в Gemfile? – sekipaolo
Конечно, это намного больше. Вы можете заставить busser-serverspec устанавливать пользовательские драгоценные камни, как это, но это не очень легко. – coderanger
busser-rspec и busser-serverspec принимают Gemfile, поэтому было бы не так уж сложно заставить их установить собственный драгоценный камень. – Martin