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
chef_runを 'lambda 'として' let'を定義しているので、テストを追加する前に何も起こらないので、テストはありません。何かの行に沿って: 'それはうまく収束する 'do {chef_run} .to_not raise_error end' – Tensibai
ありがとう@Tensibaiので、私はこの行を記述する必要がありますか? – pandey
'it'ブロックはdescribeブロック内になければなりません(コンテキストブロックの後)、ChefSpec READMEとhttps://github.com/sethvargo/chefspecの例を読みましたか? – Tensibai