Chef
ChefSpec - 測試 include_reciepe 時的覆蓋率
我正在嘗試為我們的一些食譜編寫 ChefSpec 測試。其中之一是包括許多其他食譜,以設置 Jenkins CI 環境。
我想知道其他人如何測試包含的接收器。我的“_spec.rb”現在看起來像這樣(測試範例,包括詹金斯大師):
it 'includes the `jenkins` recipe' do expect(chef_run).to include_recipe('jenkins::master') end
現在覆蓋率下降了,因為我沒有測試包含的食譜(他們有自己的 chefspec 測試)。
如果有人有一個例子或好主意……會很棒。
好的,找到了一個 Issu,看起來這是我的 CodeCoverage 的“問題” - Windows 上的 iam:https ://github.com/sethvargo/chefspec/issues/594
.. Ubuntu下同樣的問題,沒有OSX來驗證問題(-:
如果您只想測試是否包含另一個食譜中的食譜,您可以存根 include 呼叫。
它在https://github.com/sethvargo/chefspec#include_recipe的 ChefSpec 自述文件中的範例中進行了記錄
“防止包含的配方中的資源被載入到 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