
[英]chefspec: setting global node attributes to be used in all tests in recipe
[英]How to initialize variables in chefspec which is needed to be used in recipe
我在下面有配方模板资源块:
os_ver = node['platform_version'].to_f
REPO_TEMPLATE = ''
if (os_ver >= 6) && (os_ver < 7)
REPO_TEMPLATE = 'epel.repo.rhel6.erb'
elsif (os_ver >= 7) && (os_ver < 8)
REPO_TEMPLATE = 'epel.repo.rhel7.erb'
end
template EPEL_REPO_FILE do
source REPO_TEMPLATE
owner 'root'
group 'root'
mode '0644'
action :create
end
我做了这样的单元测试chefspec:
describe 'cos::upgrade_rpms' do
let(:chef_run) do
ChefSpec::SoloRunner.new do |node|
node.set['platform_version'] = '7.0'
REPO_TEMPLATE = 'epel.repo.rhel7.erb'
end.converge(described_recipe)
end
it 'creates a epel repo' do
expect(chef_run).to create_template('/etc/yum.repos.d/epel.repo').with(
source: 'epel.repo.rhel7.erb'
owner: 'root',
group: 'root',
mode: '0644'
)
end
单元测试将失败,显示:source是”不是source: 'epel.repo.rhel7.erb' 。 似乎在测试中设置的REPO_TEMPLATE无效。 有人可以说出如何在单元测试中模拟值吗?
platform_version
是一个自动属性,通常由fauxhai使用您在运行程序或全局Rspec配置中提供的os和版本进行填充(如下所示(摘自ChefSpec的自述文件并适合您的用例)):
RSpec.configure do |config|
# Specify the operating platform to mock Ohai data from (default: nil)
config.platform = 'redhat'
# Specify the operating version to mock Ohai data from (default: nil)
config.version = '7.0'
end
引用ChefSpec文档提供的有关在运行时修改自动属性的信息:
describe 'example::default' do
let(:chef_run) do
ChefSpec::SoloRunner.new do |node|
node.automatic['memory']['total'] = '512kB'
end.converge(described_recipe)
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.