Chef infra ChefSpec-无法设置节点属性
我对nginx食谱做了一个简单的测试:Chef infra ChefSpec-无法设置节点属性,chef-infra,chefspec,Chef Infra,Chefspec,我对nginx食谱做了一个简单的测试: 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 configurati
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
这是失败的:
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>
故障:
1) my_cookbook::nginx应该创建配置目录
失败/错误:预期(chef_run)。要创建_目录(“#{node['nginx']['dir']}”)
名称错误:
未定义的局部变量或方法“node”#
我正在尝试按所述设置节点属性,是否有明显的遗漏?您可以设置节点属性。如果您查看stacktrace,它会抱怨这一行:
expect(chef_run)。创建_目录(“#{node['nginx']['dir']}”)
具体来说,#{node['nginx']['dir']}
。您应该在这里使用静态值,否则您的测试将毫无意义。将其更改为:
expect(chef_run)。创建_目录('/etc/nginx'))
直接来自作者!谢谢你,赛斯!Seth,为什么这对我有效呢?除了(chef_run)。创建_目录(“#{chef::Config[:file_cache_path]}/jdk/”),但我的默认属性有问题。我希望围绕IF的资源能够被执行,但它们不是。“我的节点”属性设置为TRUE,但在运行RSpec时失败。真正的测试(厨房测试)是好的。