有些人坚持在 rspec 中使用变量。这是我的参数.pp
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) 以使此测试正常工作?
您可以通过模拟 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