私は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
どんなアイデアでも素晴らしいでしょう、ありがとう
これは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を押して、スポークサーバーを再度実行します。
私の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が再生されていると思います。
現在リリースされているbeta.20にアップグレードしました。 webratをgemfileに追加し、別のバンドルインストールを実行する必要がありました。 gemfileでは、次のようになります。
group :test do
gem "webrat"
gem 'rspec', '2.0.0.beta.20'
end
乾杯
rspec 2.2.の時点では、これは問題ではないようです。
次のGemfileが正しく機能することを確認できます...
group :test do
gem 'rspec', '2.0.0.beta.18'
gem 'spork', '0.8.4'
gem 'webrat', '0.7.1'
end
この問題は、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メソッドはこのテストでは機能しますが、「インデックス」テストでは機能しません。
助けて?
私はそれが機能しました
仕方__!必要な情報よりも多くの情報がありますが、その価値については、この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章の終わりまで)が再度実行されました。
以下は私のために問題を修正しました。
gem install rspec-Rails
Sudo apt-get install libxslt-dev libxml2-dev
bundle install
Rails generate rspec:install
ハハ、スポークを再起動して自動テストを行うとうまくいきました。時々ナイスキックが必要です。私はrspecを実行しています-Rails2.6.1 btw .. ..
Webrat 0.7.1を指定するまで、この問題は引き続き発生していました。
Sporkを「キック」し、問題を修正してくれました。