代码之家  ›  专栏  ›  技术社区  ›  millisami

shoulda宏与rspec2 beta 5和rails3 beta 2

  •  4
  • millisami  · 技术社区  · 14 年前

    我已经设置了rspec2 beta5和shoulda,如下所示使用rspec模型测试中的shoulda宏。

    ============

    2011年2月18日更新

    现在我们可以用盒外的shoulda matchers了。

    只要添加 gem shoulda-matchers 在你的GemFile中,没有其他的在spec-helper或任何hack中。它只是运行。

    ============

    电子文件

    group :test do
      gem "rspec", ">= 2.0.0.beta.4"
      gem "rspec-rails", ">= 2.0.0.beta.4"
      gem 'shoulda',          :git => 'git://github.com/bmaddy/
    shoulda.git'
      gem "faker"
      gem "machinist"
      gem "pickle",           :git => 'git://github.com/codegram/
    pickle.git'
      gem 'capybara',         :git => 'git://github.com/jnicklas/
    capybara.git'
      gem 'database_cleaner', :git => 'git://github.com/bmabey/
    database_cleaner.git'
      gem 'cucumber-rails',   :git => 'git://github.com/aslakhellesoy/
    cucumber-rails.git'
    end
    

    黑穗猴

    Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
    
    require 'shoulda'
    
    Rspec.configure do |config|
    

    规格/型号/出口规格RB

    require 'spec_helper'
    
    describe Outlet do
      it { should validate_presence_of(:name) }
    end
    

    当我运行规范时,我得到以下错误。

    [~/rails_apps/rails3_apps/automation (master)⚡] ➔ spec spec/models/
    outlet_spec.rb
    DEPRECATION WARNING: RAILS_ROOT is deprecated! Use Rails.root instead.
    (called from join at /home/millisami/.rvm/gems/ruby-1.9.1-p378%rails3/
    bundler/gems/shoulda-87e75311f83548760114cd4188afa4f83fecdc22-master/
    lib/shoulda/autoload_macros.rb:40)
    F
    
    1) Outlet
        Failure/Error: it { should validate_presence_of(:name) }
        undefined method `validate_presence_of' for
    #<Rspec::Core::ExampleGroup::Nested_1:0xc4dc138 @__memoized={}>
        # ./spec/models/outlet_spec.rb:4:in `block (2 levels) in <top
    (required)>'
    
    Finished in 0.0399 seconds
    1 example, 1 failures
    [~/rails_apps/rails3_apps/automation (master)⚡] ➔
    

    为什么是“未定义的方法”??应该上船吗?

    3 回复  |  直到 13 年前
        1
  •  6
  •   Chris Blunt    14 年前

    使用rspec 2.0.0.beta.19

    # Gemfile
    group :test do
      gem "rspec", ">= 2.0.0.beta.19"
      gem "rspec-rails", ">= 2.0.0.beta.17"
      gem "shoulda"
    end
    
    # spec/spec_helper.rb
    require 'rspec/rails'
    require 'shoulda/integrations/rspec2' # Add this line
    
    # In your specs....
    it { should validate_presence_of(:name) }
    

    运行 rake spec 现在应该加载并运行规范,包括rspec 2匹配器。

        2
  •  0
  •   jewilmeer    14 年前

    认为这与Rails3中验证的新语法有关:

    验证:name,:presence=>true

        3
  •  0
  •   Miguel Ping    14 年前

    方法应该被验证 S 的。你错过了 “S”