Reputation: 2592
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?
Upvotes: 6
Views: 3983
Reputation: 26997
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')
Upvotes: 10