2013-02-25 4 views
1

Я новичок в рубине, и я просто начинаю свой первый проект. , когда я пытаюсь запустить свой первый тест через rspec, я потерпел неудачу.ruby ​​on rails 3 - неопределенный метод `has_content? ' для «HomePages»: String

это мой Gemfile:

source 'https://rubygems.org' 

gem 'rails', '3.2.12' 
gem 'bootstrap-sass', '2.3.0.1' 
gem 'bcrypt-ruby', '3.0.1' 
gem 'faker', '1.1.2' 
gem 'will_paginate', '3.0.4' 
gem 'bootstrap-will_paginate', '0.0.9' 
gem 'jquery-rails', '2.2.1' 
gem 'mysql2' 
#gem 'execjs' 
gem 'therubyracer', :platforms => :ruby 

# Dev and test gems 
group :development, :test do 
    gem 'rspec-rails', '2.13.0' 
    gem 'guard-rspec', '2.4.1' 
    gem 'guard-spork', '1.4.2' 
    gem 'spork', '0.9.2' 
end 

# Gems used only for assets and not required 
# in production environments by default. 
group :assets do 
    gem 'sass-rails', '3.2.6' 
    gem 'coffee-rails', '3.2.2' 
    gem 'uglifier', '1.3.0' 
end 

#only test gems 
group :test do 
    gem 'capybara', '2.0.2' 
    gem 'factory_girl_rails', '4.2.1' 
    gem 'cucumber-rails', '1.3.0', :require => false 
    gem 'database_cleaner', '0.9.1' 
    # gem 'launchy', '2.1.0' 
    # gem 'rb-fsevent', '0.9.1', :require => false 
    # gem 'growl', '1.0.3' 
end 

group :production do 
    gem 'pg', '0.12.2' 
end 

и вот мой home_pages_spec.rb

require 'spec_helper' 

describe "HomePages" do 
    before { get 'home_page/home'} 
    it { should have_content("Home")} 
end 

когда я бегу

bundle exec rspec spec/requests/home_pages_spec.rb 

я получить

Failures: 

    1) HomePages 
    Failure/Error: it { should have_content("Home")} 
    NoMethodError: 
     undefined method `has_content?' for "HomePages":String 
    # ./spec/requests/home_pages_spec.rb:5:in `block (2 levels) in <top (required)>' 

, пожалуйста, помогите мне, я немного искал и увидел подобную проблему, но не так ... плюс они были добрыми старыми и что раньше было ошибкой.

плюс, если вы можете объяснить мне, почему я не могу использовать команду посещения (также неопределенный метод `visit 'для RSpec :: Core :: ExampleGroup :: Nested_1 ...) и должен использовать команду get, это будет большой

ответ

0

Метод get от rspec-rails, и это позволяет нам сделать это:

specify { response.should have_content("Foo") } 

Метод visit составляет от capybara, и это позволяет нам сделать это:

specify { page.should have_content("Foo") } 

Эти методы был доступен для всех спецификаций в spec/requests, но с Capybara 2.0 они были разделены. Теперь мы разместим тесты интеграции Capybara в spec/features.

Пожалуйста, см. this blog post, почему это было сделано.

0

Я считаю, что вы ищете have_content RSpec (в) http://rubydoc.info/github/jnicklas/capybara/master/Capybara/RSpecMatchers

изменить строку: она {должна have_contact ("Начало")}

к: он {должен have_content ("Home")}

надеюсь, что это поможет

+0

это была типичная версия, я пробовал ее с has_content. Я редактировал свой оригинальный вопрос. – Nir

2

если вы используете это вместо ожидать (страницы) .то, вы должны объявить, что это его:

describe "HomePages" do 
    before { get 'home_page/home'} 
    subject { page } 
    it { should have_content("Home")} 
end 

или вы можете просто сделать:

describe "HomePages" do 
    before { get 'home_page/home'} 
    expect(page).to have_content('Home') 
end 
Смежные вопросы