rspec-puppet中有没有为参数动态赋值的选项?
下面是我的示例rspec-puppet测试用例。现在,我已经硬编码了所有的FQDN和主机名详细信息。
是否可以动态分配这些值?
let :facts do
{
:fqdn => 'puppet.example.com',
:hostname => 'puppet',
:ipaddress => 'xxx.yy.ee.zzz'
}
end
it do
should contain_host('puppet.example.com').with(
'ensure' => 'present',
'host_aliases' => 'puppet',
'ip' => 'xxx.yy.ee.zzz'
)
end发布于 2015-07-07 21:05:33
是的,因为rspec本身就是ruby代码本身,所以你可以这样做:
['1.1.1.1','2.2.2.2'].each do | ip_address |
context "with an IP Address of #{ip_address}" do
let :facts do
{
:fqdn => 'puppet.example.com',
:hostname => 'puppet',
:ipaddress => ip_address,
}
end
it do
is_expected.to contain_host('puppet.example.com').with(
'ensure' => 'present',
'host_aliases' => 'puppet',
'ip' => ip_address,
)
end
end
end您也可以使用shared_examples和shared_contexts执行类似的操作
shared_examples :compile, :compile => true do
it { should compile.with_all_deps }
end
shared_context 'redhat_facts' do |operatingsystem, operatingsystemrelease|
let(:facts) { super().merge({
:osfamily => "RedHat",
:operatingsystem => operatingsystem,
:operatingsystemrelease => operatingsystemrelease
}) }
endhttps://stackoverflow.com/questions/31161849
复制相似问题