2010-04-07 5 views
4

Я установил Rspec2 beta5 и shoulda следующим образом, чтобы использовать макросы toa в тестах модели rspec.макросы toa с rspec2 beta 5 и rails3 beta2

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

Update 2011-Февраль-18

Теперь мы можем использовать Shoulda-matchers из коробки.

Просто добавьте gem shoulda-matchers в вас Gemfile и ничего больше в spec_helper или любом хаке. Он просто бежит.

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

Gemfile

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 

spec_helper.rb

Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f} 

require 'shoulda' 

Rspec.configure do |config| 

спецификации/модели/outlet_spec.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)⚡] ➔ 

Почему «неопределенный метод» ?? Должен ли загружаться груз?

+0

То же самое здесь. Вы когда-нибудь узнавали, почему? –

+0

Nop, я отказался от нее и начал с rspec-рельсов. – Autodidact

ответ

6

Использование 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 matchers.

0

Думаю, что это что-то делать с новым синтаксисом валидаций в rails3:

проверяющий: имя,: присутствие => верно

0

Метод должен быть проверить сек _presence_of. Вы пропустили 'S'