2016-05-23 6 views
0

IISのコンポーネントをインストールするためのレシピがあります。たくさんありますので、それはwindows_featureインストールブロックに入る配列です。同様に、Chefspecが配列に対して反復しない

strings.each do |st| 
    windows_feature st do 
     guard_interpreter :powershell_script 
     not_if "$ret = Get-WindowsOptionalFeature -Online -FeatureName #{st}; if ($ret.State -eq 'Disabled') { return 'false'} else {return 'true'}" 
     action :install 
    end 
end 

関連するChefspecブロックには、同じ配列の内容が含まれています。ブロックは、次のとおりです。

describe 'HEQIIS::IIS' do 
    let(:chef_run) { ChefSpec::SoloRunner.converge('HEQIIS::IIS') } 
    strings.each do |st| 
    it "installs_#{st}" do 
     stub_command("$ret = Get-WindowsOptionalFeature -Online -FeatureName #{st}; if ($ret.State -eq 'Disabled') { return 'false'} else {return 'true'}").and_return(false) 
     expect(chef_run).to install_windows_feature("#{st}") 
    end 
    end 
end 

私は料理本でChefspecを実行すると、私はエラーが出る:それはWebServerRole」として-Featurenameを表示し、エラーでは、

HEQIIS::IIS installs_IIS-LegacyScripts 
     Failure/Error: let(:chef_run) { ChefSpec::SoloRunner.converge('HEQIIS::IIS') } 

     ChefSpec::Error::CommandNotStubbed: 
     Executing a real command is disabled. Unregistered command: 

      command("$ret = Get-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole; if ($ret.State -eq 'Disabled') { return 'false'} else {return 'true'}") 

     You can stub this command with: 

      stub_command("$ret = Get-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole; if ($ret.State -eq 'Disabled') { return 'false'} else {return 'true'}").and_return(...) 
     # ./heqiis/spec/default_spec.rb:70:in `block (2 levels) in <top (required)>' 
     # ./heqiis/spec/default_spec.rb:75:in `block (3 levels) in <top (required)>' 

、それはありません各行ごとに(30項目)。その段階で最初の項目を反復するだけであることを示します。それは、私がstub_commandブロックを使っているという事実と相まって、なぜそれが誤りであるのか本当に分かりません。誰でも考えがありますか?

答えて

1

あなたの仕様では、シェフの実行がレットブロックに収束しています。 ブロック内にあるようにあなたのstub_command()コールを移動するのが助けになりますか?

編集:確かに、あなたのレシピファイルは、仕様のexpect()呼び出しごとにスタブする必要のあるコマンドの配列全体を設定しています。ブロック全体の中に2番目のループを追加すると、すべてのコマンドをスタブして問題を解決できます。

関連する問題