Подтвердить что ты не робот

Почему Rspec говорит "Ошибка/Ошибка: не удается найти соответствующую строку из backtrace"?

Я следую руководству по рельсам здесь: http://railstutorial.org/chapters/filling-in-the-layout#top

Когда я запускаю "rspec spec/", я получаю кучу ошибок, которые выглядят так:

1) LayoutLinks should have a Home page at '/'
    Failure/Error: Unable to find matching line from backtrace
    stack level too deep
    # C:/Ruby19/lib/ruby/1.9.1/forwardable.rb:185

2) LayoutLinks should have a Contact page at '/contact'
    Failure/Error: Unable to find matching line from backtrace
    stack level too deep
    # C:/Ruby19/lib/ruby/1.9.1/forwardable.rb:185

Но когда я перехожу в свой веб-браузер к localhost: 3000/и localhost: 3000/contact, там есть страницы, и там есть правильные заголовки. Вот мой файл myrailsroot\spec\requests\layout_links_spec.rb:

require 'spec_helper'

describe "LayoutLinks" do

  it "should have a Home page at '/'" do
    get '/'
    response.should have_selector('title', :content => "Home")
  end

  it "should have a Contact page at '/contact'" do
    get '/contact'
    response.should have_selector('title', :content => "Contact")
  end

  it "should have an About page at '/about'" do
    get '/about'
    response.should have_selector('title', :content => "About")
  end

  it "should have a Help page at '/help'" do
    get '/help'
    response.should have_selector('title', :content => "Help")
  end

  it "should have a signup page at '/signup'" do
    get '/signup'
    response.should have_selector('title', :content => "Sign up")
  end

end

Любые идеи были бы замечательными, спасибо

4b9b3361

Ответ 1

Это связано с ошибкой в ​​RSpec 2.0.0.19. Если вы используете 2.0.0.б .18, как предлагает учебник, он будет работать нормально. Просто измените любую версию, которую вы имеете в своем Gemfile, на бета-версию 18, установите пакет и снова запустите тесты.

Вот соответствующие части из моего Gemfile.

group :development do
  gem 'rspec-rails', '2.0.0.beta.18'
end

group :test do
  gem 'rspec-rails', '2.0.0.beta.18'
  gem 'spork', '0.8.4'
end

Также обратите внимание, что Spork также может периодически вызывать подобные проблемы. Если у вас возникнут необъяснимые неудачи тестов, особенно если вы просто добавили новые контроллеры или действия, дайте им ответный удар. Нажмите Ctrl-C и снова запустите spork-сервер.

Ответ 2

мой gemfile выглядел так и работает

group :test do 
    gem 'rspec-rails'
    gem 'webrat', '0.7.1'
end

где rspec-rails (2.1.0)

однако не следует:

group :test do 
    gem 'rspec-rails'
    gem 'webrat', '0.7.2'
end

Итак, я думаю, что это webrat играет вверх.

Ответ 3

Я обновился до бета-версии .20, который теперь отсутствует. Пришлось добавить webrat в мой gemfile и выполнить еще одну установку пакета. В gemfile он выглядит так:

group :test do
  gem "webrat"
  gem 'rspec', '2.0.0.beta.20'
end

Приветствия

Ответ 4

Я вижу эту проблему только для двух моих тестов.

Мой gemfile выглядит следующим образом:

source 'http://rubygems.org'

gem 'rails', '3.0.0'
gem 'sqlite3-ruby', '1.2.5', :require => 'sqlite3'
gem 'gravatar_image_tag', '0.1.0'
gem 'will_paginate', '3.0.pre2'

group :development do
  gem 'rspec-rails', '2.0.0.rc'
  gem 'webrat', '0.7.1'
  gem 'annotate-models', '1.0.4'
  gem 'faker', '0.3.1'
end

group :test do
  gem 'rspec', '2.0.0.rc'
  gem 'webrat', '0.7.1'
  gem 'spork', '0.8.4'
  gem 'factory_girl_rails', '1.0'
end

Я тоже пробовал бета для rspec-rails, но безрезультатно.

Два из заголовков, которые все еще дают мне ошибки, следующие:

От users_controller_spec.rc

  it "should have the right title" do
    get :index
    response.should have_selector("title", :content => "All users")
  end

  #...

    it "should have the right title" do
      post :create, :user => @attr
      response.should have_selector("title", :content => "Sign up")
    end

Отрывок из ошибок гласит:

Failures:
  1) UsersController GET 'index' for signed-in users should have the right title
     Failure/Error: response.should have_selector("title", :content => "All users")
     expected following output to contain a <title>All users</title> tag:
     <!DOCTYPE html>
     <html>
     <head>
     <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
     <title>Ruby on Rails Tutorial Sample App | All Users</title>

и

2) UsersController Post 'create' for non-signed in users failure should have the right title
     Failure/Error: response.should have_selector("title", :content => "Sign up")
     expected following output to contain a <title>Sign up</title> tag:
     <!DOCTYPE html>
     <html>
     <head>
     <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
     <title>Ruby on Rails Tutorial Sample App | Sign Up</title>

соответственно.

Как видно из вывода, "Знак" и "Индекс" четко показаны справа от названия. Это особенно озадачивает, что работает следующий тест:

  it "should have the right title" do
    get :new
    response.should have_selector("title", :content => "Sign up")
  end

Это для одной и той же страницы и содержит те же заголовки, что и другой тест "Зарегистрироваться". Также метод get работает в этом тесте, но не в тесте "Индекс".

Справка

Ответ 5

Это не похоже на проблему с rspec 2.2.0

Ответ 6

У меня РАБОТАЕТ

W__A__Y__! больше информации, чем вам нужно, но для чего это стоит, этот Gemfile...

source 'http://rubygems.org'

gem 'rails', '3.0.3'

# Bundle edge Rails instead: <br/>
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3-ruby', :require => 'sqlite3'

# Use unicorn as the web server<br/>
# gem 'unicorn'

# Deploy with Capistrano<br/>
# gem 'capistrano'

# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)<br/>
# gem 'ruby-debug'<br/>
# gem 'ruby-debug19'

# Bundle the extra gems:<br/>
# gem 'bj'<br/>
# gem 'nokogiri'<br/>
# gem 'sqlite3-ruby', :require => 'sqlite3'<br/>
# gem 'aws-s3', :require => 'aws/s3'<br/>

# Bundle gems for the local environment. Make sure to<br/>
# put test-only gems in this group so their generators<br/>
# and rake tasks are available in development mode:<br/>
# group :development, :test do<br/>
#   gem 'webrat'<br/>
# end<br/>
group :test, :development do<br/>
gem 'rspec-rails', '2.0.0.beta.18'<br/>
# gem 'capybara'<br/>
gem 'webrat', '0.7.1'<br/>
gem 'database_cleaner'<br/>
gem 'cucumber-rails'<br/>
gem 'cucumber'<br/>
gem 'spork'<br/>
gem 'launchy'<br/>
end

... после запуска...

$ bundle install

... и...

$ bundle update webrat

... приводит к этому... bundle...

Using rake (0.8.7) <br/>
Using abstract (1.0.0) <br/>
Using activesupport (3.0.3) <br/>
Using builder (2.1.2) <br/>
Using i18n (0.5.0) <br/>
Using activemodel (3.0.3) <br/>
Using erubis (2.6.6) <br/>
Using rack (1.2.1) <br/>
Using rack-mount (0.6.13) <br/>
Using rack-test (0.5.7) <br/>
Using tzinfo (0.3.23) <br/>
Using actionpack (3.0.3) <br/>
Using mime-types (1.16) <br/>
Using polyglot (0.3.1) <br/>
Using treetop (1.4.9) <br/>
Using mail (2.2.14) <br/>
Using actionmailer (3.0.3) <br/>
Using arel (2.0.7) <br/>
Using activerecord (3.0.3) <br/>
Using activeresource (3.0.3) <br/>
Using bundler (1.0.7) <br/>
Using configuration (1.2.0) <br/>
Using diff-lcs (1.1.2) <br/>
Using json (1.4.6) <br/>
Using gherkin (2.3.3) <br/>
Using term-ansicolor (1.0.5) <br/>
Using cucumber (0.10.0) <br/>
Using cucumber-rails (0.3.2) <br/>
Using database_cleaner (0.6.0) <br/>
Using launchy (0.3.7) <br/>
Using nokogiri (1.4.4) <br/>
Using thor (0.14.6) <br/>
Using railties (3.0.3) <br/>
Using rails (3.0.3) <br/>
Using rspec-core (2.4.0) <br/>
Using rspec-expectations (2.4.0) <br/>
Using rspec-mocks (2.4.0) <br/>
Using rspec (2.4.0) <br/>
Using webrat (0.7.1) <br/>
Using rspec-rails (2.0.0.beta.18) <br/>
Using spork (0.8.4) <br/>
Using sqlite3-ruby (1.3.2)

..., который запустил все тестовые тесты приложений (в конце главы 5).

Ответ 7

Я могу подтвердить, что следующий Gemfile работает правильно...

group :test do
  gem 'rspec', '2.0.0.beta.18'
  gem 'spork', '0.8.4'
  gem 'webrat', '0.7.1'
end

Ответ 8

Я все еще видел эту проблему, пока не определил webrat 0.7.1.

Ответ 9

Следующее исправление проблемы для меня.

gem install rspec-rails
sudo apt-get install libxslt-dev libxml2-dev
bundle install
rails generate rspec:install

Ответ 10

haha, перезапуск spork и autotest сделали трюк. ему иногда нужен хороший удар. Я запускаю rspec-rails 2.6.1 btw...

Ответ 11

"Разбито" Spork и исправил проблему для меня.