我正在对现有模块(不是我自己编写的)进行单元测试。我似乎无法将 params 类undef
值覆盖为一个hash
值。
params 类具有以下内容(仅摘录):
class myclass::params {
splunk = undef,
...
}
主要课程(仅摘录):
class myclass(
$splunk = $myclass::params::splunk,
...
) inherits ::myclass::params
{...}
以及以下配置类(仅摘录):
class mylcass::config inherits myclass{
if $myclass::splunk['install']['package_manage'] {
file { "somefile.conf":
ensure => file,
mode => '0444',
source => 'puppet:///modules/myclass/splunk/somefile.conf',
}
...
}
}
在 config_spec.rb 文件中,我有以下内容:
require 'spec_helper'
require 'shared_contexts'
describe 'myclass::splunk::config' do
hiera = Hiera.new(:config => 'spec/fixtures/hiera/hiera.yaml')
splunk = hiera.lookup('splunk',nil,nil)
let(:params) do
{
}
end
it do
is_expected.to contain_file('somefile.conf')
.with(
'ensure' => 'file',
'mode' => '0444',
'source' => 'puppet:///modules/myclass/splunk/somefile.conf'
)
end
end
我将 hiera 查找splunk
插入到 myclass_spec.rb 文件中,希望它会覆盖:
require 'spec_helper'
require 'shared_contexts'
describe 'myclass' do
hiera = Hiera.new(:config => 'spec/fixtures/hiera/hiera.yaml')
splunk = hiera.lookup('splunk',nil,nil)
let(:params) do
{
:splunk => splunk
...
}
但我继续收到以下错误:
myclass::splunk is not a hash or array when accessing it
如何覆盖splunk
变量?