人偶:测试文件中的变量值

时间:2019-01-29 09:27:02

标签: puppet rspec-puppet

我正在为puppet编写一些测试,并且在我的init_spec.rb文件中,我想使用在default_facts.yml文件中声明的变量。我如何导入该变量的值而不必在init_spec.rb文件中声明。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

通常,您将能够访问RSpec.configuration对象中的数据。

假设您有一个默认的事实文件,如下所示:

▶ cat spec/default_facts.yml 
# Use default_module_facts.yml for module specific facts.
#
# Facts specified here will override the values provided by rspec-puppet-facts.
---
concat_basedir: "/tmp"
ipaddress: "172.16.254.254"
is_pe: false
macaddress: "AA:AA:AA:AA:AA:AA"

您可以像这样在测试中处理这些数据:

it 'ipaddress default fact' do
  expect(RSpec.configuration.default_facts['ipaddress']).to eq '172.16.254.254'
end

(我当然假设您的默认事实文件已正确设置,例如PDK。)

相反,如果您只是想以一种通用的方式访问任意YAML文件中的数据,您也可以这样做:

▶ cat spec/fixtures/mydata.yml 
---
foo: bar

然后在测试中,您可以编写:

require 'yaml'
mydata = YAML.load_file('spec/fixtures/mydata.yml')

describe 'test' do
  it 'foo' do
    expect(mydata['foo']).to eq 'bar'
  end
end