2015-06-20 45 views
1

在rspec中有一些卡住使用变量。 这里是我的params.pp在rspec-puppet测试中使用外部变量

case $::osfamily{ 
    Debian: { 
    $ssh_daemon = "ssh" 
    } 
    Redhat: { 
    $ssh_daemon = "sshd" 
    } 

在一个RSpec测试,我需要使用变量$ ssh_daemon这样的:

it { should contain_service("${ssh_daemon}").with(
    :ensure => 'running', 
    :enable => 'true', 
)} 

这里是我的ssh.pp文件

service { "${ssh_daemon}": 
    ensure => running, 
    enable => true, 
} 

我如何编写这个变量($ ssh_daemon)来使这个测试正常工作?

回答

1

您可以通过模拟Facter输出来做到这一点。

喜欢的东西:

context 'service on debian' do 
    let(:facts) { { :osfamily => 'Debian' } } 
    it { should contain_service("ssh") } 
end 

context 'service on redhat' do 
    let(:facts) { { :osfamily => 'RedHat' } } 
    it { should contain_service("sshd") } 
end 
+1

督察,你的测试需要预测的变量值督促进行有意义的结果。或者采取另一个角度 - 您的测试确保变量实际*将*取正确的值。 –

+0

感谢您的帮助,使用嘲笑因素是正确的答案,并且它可以正常工作。 – Andrey