Я пытаюсь написать тесты ChefSpec для некоторых из наших кулинарных книг. Одна из них включает в себя множество других кулинарных книг по настройке среды Jenkins CI Enviroment.
Мне интересно, как другие люди тестируют включенные рецепты. Мой "_spec.rb" сейчас выглядит следующим образом (пример для тестирования, этот мастер jenkins включен):
it 'includes the `jenkins` recipe' do
expect(chef_run).to include_recipe('jenkins::master')
end
Теперь покрытие снижается, потому что я не тестирую прилагаемые кулинарные книги (у них есть собственные тесты Chefspec).
Если у кого-то есть пример или хорошие идеи ... было бы здорово.
Хорошо, обнаружил проблему, похоже, это моя "проблема" с CodeCoverage - iam в Windows: https://github.com/sethvargo/chefspec/issues/594
.. та же проблема в Ubuntu, нет OSX для проверки проблемы (-:
Если вы хотите проверить включение рецепта из другой поваренной книги, вы можете заглушить вызов include.
Это задокументировано с примерами в файле readme ChefSpec по адресу https://github.com/sethvargo/chefspec#include_recipe
«Не допускайте загрузки ресурсов из включенного рецепта в запуск Chef, но убедитесь, что рецепт был включен»:
describe 'example::default' do
let(:chef_run) { ChefSpec::SoloRunner.converge(described_recipe) }
before do
allow_any_instance_of(Chef::Recipe).to receive(:include_recipe).and_call_original
allow_any_instance_of(Chef::Recipe).to receive(:include_recipe).with('other_cookbook::default')
end
it 'includes the other_cookbook' do
expect_any_instance_of(Chef::Recipe).to receive(:include_recipe).with('other_cookbook::default')
chef_run
end
end