web-dev-qa-db-ja.com

Rspecが「失敗/エラー:バックトレースから一致する行を見つけることができません」と言っているのはなぜですか?

私はRailsチュートリアルはこちら: http://railstutorial.org/chapters/filling-in-the-layout#top

「rspecspec /」を実行すると、次のようなエラーが発生します。

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

しかし、Webブラウザで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

どんなアイデアでも素晴らしいでしょう、ありがとう

30
Chris

これはRSpec2.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を押して、スポークサーバーを再度実行します。

14
AboutRuby

私の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が再生されていると思います。

9
Jing

現在リリースされているbeta.20にアップグレードしました。 webratをgemfileに追加し、別のバンドルインストールを実行する必要がありました。 gemfileでは、次のようになります。

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

乾杯

3
Chris

rspec 2.2.の時点では、これは問題ではないようです。

1
E. Sambo

次のGemfileが正しく機能することを確認できます...

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

この問題は、2つのタイトルテストでのみ発生しています。

私の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のベータ版も試しましたが、役に立ちませんでした。

まだエラーが発生している2つのタイトルは次のとおりです。

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メソッドはこのテストでは機能しますが、「インデックス」テストでは機能しません。

助けて?

1
Paul Pettengill

私はそれが機能しました

仕方__!必要な情報よりも多くの情報がありますが、その価値については、この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
Vern McGeorge

以下は私のために問題を修正しました。

gem install rspec-Rails
Sudo apt-get install libxslt-dev libxml2-dev
bundle install
Rails generate rspec:install
0
Zach Alberico

ハハ、スポークを再起動して自動テストを行うとうまくいきました。時々ナイスキックが必要です。私はrspecを実行しています-Rails2.6.1 btw .. ..

0
thetrystero

Webrat 0.7.1を指定するまで、この問題は引き続き発生していました。

0
John

Sporkを「キック」し、問題を修正してくれました。

0
JKMajcen