2017-03-23 6 views
0

私はrspecを新しくしています。私は仕様書を作成しようとしましたが、それは失敗しています。私が "シェフエグゼクティブrspec"をテストしようとすると、リソースを見つけられず、 "シェフのリソースが見つかりませんでした。ここシェフのリソースのためのrspec

コードと仕様である:

group sq_group do 
    system true 
end 

user sq_user do 
    gid sq_group 
    system true 
end 

上記のコードは、グループとユーザのためのものであり、以下のテストユーザおよびグループのための私のRSpecのです。あなたは、新しいレシピを作成すると

require 'spec_helper' 

describe 'lecturio_ds::user' do 
    context 'When all attributes are default, on an unspecified platform' do 
    let(:chef_run) do 
     runner = ChefSpec::ServerRunner.new 
     runner.converge(described_recipe) 
    end 

    it 'creates group' do 
     expect(chef_run).to create_group('sq_group') 
     .with(
     system: true 
     ) 
    end 

    it 'creates user' do 
     expect(chef_run).to create_user('sq_user') 
     .with(
     gid: 'sq_group' 
     system: true 
     ) 
    end 

    it 'converges successfully' do 
    chef_run # This should not raise an error 
    end 

    end 
end 

あなたがchef generate recipe cookbooks/[cookbook_name] [recipe_name]を使用する必要がありますし、あなたが自動生成されたRSpecのを取得:

require 'spec_helper' 
ChefSpec::Coverage.start! 

describe 'recipes::default' do 
    context 'Mostly defaults' do 
    let(:chef_run) do 
     ChefSpec::SoloRunner.new(platform: 'platform_name') do |node| 
     default['cookbookname']['user'] = 'user' 
     default['cookbook']['group'] = 'group' 
     end.converge(default) 
    end 
    end 
end 
+0

chef_runを 'lambda 'として' let'を定義しているので、テストを追加する前に何も起こらないので、テストはありません。何かの行に沿って: 'それはうまく収束する 'do {chef_run} .to_not raise_error end' – Tensibai

+0

ありがとう@Tensibaiので、私はこの行を記述する必要がありますか? – pandey

+0

'it'ブロックはdescribeブロック内になければなりません(コンテキストブロックの後)、ChefSpec READMEとhttps://github.com/sethvargo/chefspecの例を読みましたか? – Tensibai

答えて

2

は、あなたのレシピを「user.rb」と呼ばれ、あなたはそれのために、以下の仕様を持つことになりますと仮定しましょう適切なテストを行うために必要なレシピのファイル。

関連する問題