rspec-puppet测试失败未定义的方法

时间:2014-05-29 15:10:07

标签: ruby rspec puppet

我试图为一个简单的木偶类编写我的第一个rspec测试。这是类,rspec测试和结果。我是rspec的新手,想知道我在这里做错了什么。我按照http://rspec-puppet.com/setup/中的说明为这些测试配置了rspec-puppet。谢谢。

cron模块的类示例 init.pp

class cron {

        service { 'crond' :
                ensure => running,
                enable => true
    }
}

Rspec测试

require '/etc/puppetlabs/puppet/modules/cron/spec/spec_helper'

describe 'cron', :type => :module do

      it { should contain_class('cron') }
      it do should contain_service('crond').with(
    'ensure' => 'running',
    'enable' => 'true'
      ) end
end

结果

FF

Failures:

  1) cron
     Failure/Error: it { should contain_class('cron') }
     NoMethodError:
       undefined method `contain_class' for #<RSpec::Core::ExampleGroup::Nested_1:0x00000001c66d70>
     # ./cron_spec.rb:5:in `block (2 levels) in <top (required)>'

  2) cron
     Failure/Error: it do should contain_service('crond').with(
     NoMethodError:
       undefined method `contain_service' for #<RSpec::Core::ExampleGroup::Nested_1:0x00000001c867b0>
     # ./cron_spec.rb:6:in `block (2 levels) in <top (required)>'

Finished in 0.00237 seconds
2 examples, 2 failures

Failed examples:

rspec ./cron_spec.rb:5 # cron
rspec ./cron_spec.rb:6 # cron

1 个答案:

答案 0 :(得分:2)

你从哪里拿起

describe 'cron', :type => :module

语法?这可能已经过时了。

使用当前版本的rspec-puppet,您可以描述

  • 已定义的类型
  • 功能
  • 主机

你基本上只想把你的规范放到spec/classes/cron_spec.rb,这应该是你工作的一半,例如。

# spec/classes/cron.rb
require "#{File.join(File.dirname(__FILE__),'..','spec_helper.rb')}"

describe 'cron' do
  it { should contain_service('crond').with('ensure' => 'running') }
  it { should contain_service('crond').with('enable' => 'true') }
end

优良作法是对每个属性值进行不同的测试,以便更准确地识别未来可能的回归。

请参阅README

有关结构良好的模块测试套件的一个很好的示例,请参阅example42's modules