Почему Rspec говорит: «Сбой / Ошибка: Невозможно найти совпадающую строку из обратного следа»? - PullRequest
30 голосов
/ 19 августа 2010

Я следую инструкции по рельсам здесь: 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 \ запросы \ 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

Любые идеи будут великолепны, спасибо

Ответы [ 11 ]

14 голосов
/ 22 августа 2010

Это связано с ошибкой в ​​RSpec 2.0.0.beta.19. Если вы используете 2.0.0.beta.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 также может время от времени вызывать подобные проблемы. Если вы получаете необъяснимые сбои теста, особенно если вы только что добавили новые контроллеры или действия, идите, дайте spork пинок. Нажмите Ctrl-C и снова запустите spork-сервер.

9 голосов
/ 10 ноября 2010

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

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

Так что я думаю, что это вебрат подыгрывает.

3 голосов
/ 31 августа 2010

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

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

Приветствия

1 голос
/ 02 мая 2011

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

group :test do
  gem 'rspec', '2.0.0.beta.18'
  gem 'spork', '0.8.4'
  gem 'webrat', '0.7.1'
end
1 голос
/ 17 января 2011

Я получил это работает

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

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

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) запустить снова.

1 голос
/ 29 ноября 2010

Похоже, это не проблема с rspec 2.2.0

1 голос
/ 08 ноября 2010

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

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

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 какну безрезультатно.

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

From 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>

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

Как видно из выходных данных, «Sign Up» и «Index» четко отображаются справа от заголовка.Это особенно озадачивает тем, что следующий тест работает:

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

, который предназначен для той же страницы и содержит то же название, что и другой тест "Регистрация".Также метод get работает в этом тесте, но не в тесте «Index».

Помощь?

0 голосов
/ 29 февраля 2012

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

0 голосов
/ 01 ноября 2011

хаха, перезапуск spork и автотест сделали свое дело.это действительно нуждается в хорошем ударе время от времени.я бегу rspec-rails 2.6.1 кстати ...

0 голосов
/ 13 апреля 2011

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

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