Я построил поваренную книгу для установки Jenkins CI. Он использует key
и repository
ресурсы из yum
поваренной книги, так что я в конечном итоге со следующим рецептом:ChefSpec не должен тестировать включенный рецепт
yum_key "RPM-GPG-KEY-jenkins" do
url "http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key"
action :add
end
yum_repository "jenkins" do
description "Jenkins-CI 3rd party repository"
url "http://pkg.jenkins-ci.org/redhat"
key "RPM-GPG-KEY-jenkins"
action :add
end
Когда я включаю этот рецепт в другой рецепт:
include_recipe 'sp_jenkins::default'
и я проверить это с следующий тест ChefSpec
it 'includes the `sp_jenkins::default` recipe' do
expect(chef_run).to include_recipe('sp_jenkins::install')
end
мой ChefSpec тест терпит неудачу с следующий вывод:
NameError:
Cannot find a resource for yum_key on chefspec version 0.6.1
(я не знаю, почему он говорит, что версия 0.6.1, gem list
говорит мне, что он использует 3.0.2)
sp_jenkins
поваренной действительно зависит от yum
поваренной книги (metadata.rb), и работает хорошо, однако поваренная книга, которую я сейчас пишу, не зависит от кулинарной книги yum
и, следовательно, не имеет доступных методов yum_key
и yum_repository
.
Есть ли способ предотвратить использование ChefSpec в «включенных» рецептах/поваренных книгах и просто проверить текущую поваренную книгу?
Вы говорите, что вы включили рецепт 'include_recipe 'sp_jenkins :: default'', но утверждаете' include_recipe (' sp_jenkins :: install ') '. какой рецепт содержит ресурсы 'yum_key' и' yum_repository'? – shawnzhu
Рецепт 'sp_jenkins' содержит ресурсы, но я тестирую поваренную книгу, которая включает' include_recipe 'sp_jenkin :: default', в которой не указано кулинарная книга 'yum', указанная как зависящая. – mtak
Он должен работать так, как сейчас. Похоже, что ChefSpec не может найти вашу кулинарную книгу 'yum'. Это в той же папке, что и кулинарная книга Дженкинса? Если это не так, убедитесь, что ChefSpec знает, где искать поваренные книги. Попытайтесь найти строку '0.6.1' - что это может означать, что поможет. –