質問

I have a simple test for the nginx cookbook:

require 'spec_helper'

describe 'my_cookbook::nginx' do
  let(:chef_run) do
    ChefSpec::Runner.new do |node|
      node.set['nginx']['dir'] = '/etc/nginx'
    end.converge(described_recipe)
  end

  it 'should create configuration directory' do
    expect(chef_run).to create_directory("#{node['nginx']['dir']}")
  end

end

Which is failing:

Failures:

  1) my_cookbook::nginx should create configuration directory
     Failure/Error: expect(chef_run).to create_directory("#{node['nginx']['dir']}")
     NameError:
       undefined local variable or method `node' for #<RSpec::Core::ExampleGroup::Nested_1:0x00000007993570>

I'm attempting to set the node attributes as described in the docs, is there something obvious I'm missing?

役に立ちましたか?

解決

You are able to set node attributes. If you look at the stacktrace, it's complaining about this line:

expect(chef_run).to create_directory("#{node['nginx']['dir']}")

Specifically, #{node['nginx']['dir']}. You should use a static value here, otherwise your test is pointless. Change it to:

expect(chef_run).to create_directory('/etc/nginx')
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top