Rspec Chefspec:override属性不';行不通
我正在尝试使用Rspec Chefspec:override属性不';行不通,rspec,chef-infra,chefspec,Rspec,Chef Infra,Chefspec,我正在尝试使用bundle exec rspec检查规范测试,以进行以下测试 require 'spec_helper' describe 'my_recipe::default' do windows_platforms = { windows: %w(2008R2 2012 2012R2 2016 2019) } windows_platforms.each do |platform, versions| versions.each do |version|
bundle exec rspec
检查规范测试,以进行以下测试
require 'spec_helper'
describe 'my_recipe::default' do
windows_platforms = {
windows: %w(2008R2 2012 2012R2 2016 2019)
}
windows_platforms.each do |platform, versions|
versions.each do |version|
context "When all attributes are default, on #{platform} #{version}" do
let(:chef_run) do
runner = ChefSpec::ServerRunner.new(platform: platform.to_s, version: version) do |node|
node.override['domain'] = 'mydomain.com'
end
runner.converge(described_recipe)
end
it 'converges successfully' do
expect { chef_run }.to_not raise_error
end
end
end
end
end
下面是我的默认属性文件的示例:
default['wsus'] =
case node['domain']
when 'mydomain.com'
"do something"
else
raise 'Domain cannot be determined.'
end
据我所知,“mydomain.com”应该被指定为默认的['domain'],但事实似乎并非如此
下面是我得到的错误:
expected no Exception, got #<RuntimeError: Domain cannot be determined.> with backtrace:
不应出现异常,已通过回溯获得:
有人对测试为什么不采用覆盖属性有什么建议吗
p、 如果我讲不通,请原谅。这是我关于stackoverflow的第一篇文章:(您的代码很好,它应该可以像预期的那样使用许多其他属性,但不是
域
。重点是-域
是特殊的-它是Ohai(或者在Fauxhai的测试用例中)设置的自动属性并且它具有最大优先级,不能被override
属性覆盖。要模拟自动属性,您需要automatic
键
runner = ChefSpec::ServerRunner.new(platform: platform.to_s, version: version) do |node|
node.automatic['domain'] = 'mydomain.com'
end
整个自动属性列表都可以在中找到。您的代码很好,并且它应该与许多其他属性一样工作,但不是
域
。要点是-域
是特殊的-它是Ohai(或者在Fauxhai的测试用例中)设置的自动属性并且它具有最大优先级,不能被override
属性覆盖。要模拟自动属性,您需要automatic
键
runner = ChefSpec::ServerRunner.new(platform: platform.to_s, version: version) do |node|
node.automatic['domain'] = 'mydomain.com'
end
自动属性的整个列表在中提供