2014-11-28 2 views
2

В поваренной книге я определил класс 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 на общем уровне, так что я могу проверить его отдельно и не беспокоиться о них на единицу и интеграционных тестах

ответ

2

Вы бы загрузите его очень вручную, возможно, добавьте временную папку, содержащую данные поваренной книги, в путь загрузки, я думаю, что она находится под /tmp/kitchen/cookbooks. Добавьте правильную папку libraries/, а затем требуйте, как обычно. В целом фазы слияния и проверки не имеют ничего общего друг с другом, так как тестовая кухня может использоваться с вещами, отличными от шеф-повара.

Возможно, вы захотите посмотреть что-то наподобие minitest handler, которое запускает тесты в контексте конвергенции шеф-повара или audit mode proposal, что делает подобные вещи.

Используя что-то вроде этого, вы должны были бы написать свои тесты в самой кулинарной книге, поэтому сходимость на самом деле будет как сближением узла, так и с запуском тестов, и проверка будет либо без-op, либо будет работать дополнительно, внешние тесты.

+0

может быть решением для обмена этой библиотекой как драгоценного камня и добавления их в Gemfile? – sekipaolo

+0

Конечно, это намного больше. Вы можете заставить busser-serverspec устанавливать пользовательские драгоценные камни, как это, но это не очень легко. – coderanger

+0

busser-rspec и busser-serverspec принимают Gemfile, поэтому было бы не так уж сложно заставить их установить собственный драгоценный камень. – Martin

Смежные вопросы