Назад | Перейти на главную страницу

ChefSpec - Покрытие при тестировании include_reciepe

Я пытаюсь написать тесты 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