私はレールに非常に新たなんだ、とrailstutorialに従うことをしようとしています。すべては名前のルート(5.3.3)RSPECと命名ルートが
を乗り越えることができない私のテストを除いて、細かい行く私のroutes.rbを:
SampleApp::Application.routes.draw do
resources :users
match '/signup', to: 'users#new'
match '/help', to: 'static_pages#help'
match '/about', to: 'static_pages#about'
match '/contact', to: 'pages#contact'
root to: 'static_pages#home'
#Commented stuff
私の初テスト(スペック/コントローラ/ static_pages_controller_spec。 RB):
describe "Static pages" do
subject { page }
shared_examples_for "all static pages" do
it { should have_selector('h1', text: heading) }
it { should have_selector('title', text: full_title(page_title)) }
end
describe "Home page" do
before { visit root_path }
let(:heading) { 'Sample App' }
let(:page_title) { 'Home' }
it_should_behave_like "all static pages"
end
#Other tests
spec_helper.rbはすべてコメントしものなし(ように見える)
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
end
私はRSpecのから取得するエラーはすべて、この1のようなものです:
Static pages Home page it should behave like all static pages
Failure/Error: before { visit root_path }
NameError:
undefined local variable or method `root_path' for #<RSpec::Core::ExampleGroup::Nested_2::Nested_1::Nested_1:0x00000004a12210>
Shared Example Group: "all static pages" called from ./spec/controllers/static_pages_controller_spec.rb:17
# ./spec/controllers/static_pages_controller_spec.rb:13:in `block (3 levels) in <top (required)>'
私はすでにspec_helperで
include Rails.application.routes.url_helpers
を使用してみましたが、それは
Static pages Home page it should behave like all static pages
Failure/Error: Unable to find matching line from backtrace
SystemStackError:
stack level too deep
# /usr/lib/ruby/1.9.1/forwardable.rb:185
に自分の誤りを変更しました私は私のルートの名前を変更する別の方法を試みましたが、それらのどれも働いていませんでした。私はチュートリアルのバージョンに戻ります。
それがまさに問題が何であるかを見つけるの任意の助けになることができれば、私はレール3.2.1とルビー1.9.2p290では、Ubuntu 11.10上です。私は解決策をグーグルでかなり長い間を費やし、あらゆる^^」私はあなたのRSpecのコントローラの仕様の内部という名前のルートへのアクセスを持っていないと思います
「設定」を除いて、まさに私がやったことです。部。すべてが今完璧に動作します!どうもありがとう ! – FabPelletier
誰かがこれを遠くにして困惑している場合、root_path(etc)はRSpecテストの "記述"ブロック内の "it"セクションの "do ... end"ブロック内でしか動作しないことにも注意してください。したがって、関数に渡されたパス・パラメーターに基づいて "it"セクションを処理する関数を作成した場合は、その関数にroot_path(etc)をパラメーターとして渡すことはできません。 – DreadPirateShawn
これはまた、Rails 4.2 deprecastion警告の 'DEPRECATION WARNING:named_routes.helpersが推奨されなくなりました。route_defined?(route_name)を使用して名前付きルートが定義されているかどうかを確認してください。' httpsを待つまで、 ://github.com/rspec/rspec-rails/pull/1142がリリースされました。 –