ちょっとはまってたのでメモ。
Rails チュートリアルの5章でルーティングを指定した際に同時にテストコードも書き換える部分がある。この部分の通りに config/routes.rb 及び spec/requests/static_pages_spec.rb を編集すると以下のようなエラーが出てテストが失敗した。
7) Static pages Home page
Failure/Error: before { visit root_path }
NameError:
undefined local variable or method `root_path' for #<RSpec::ExampleGroups::StaticPages::HomePage:0x007fff15c556b8>
# ./spec/requests/static_pages_spec.rb:14:in `block (3 levels) in <top (required)>'
調べてみるとこの対処方法には以下の2つがあるようだ。
- spec_helper.rb に名前付きルートを使えるように指定する
- spork を使用している場合はリロードする
自分の場合は spork 未使用時にエラーが出たので名前付きルートが RSpec で使えないのが原因だろうと以下のページを参照し spec_helper.rb を修正したところ正常に動作した。
ruby on rails - undefined local variable or method `root_path' - Stack Overflow
RSpec.configure do |config|
config.include Rails.application.routes.url_helpers
end
チュートリアルとバージョンの指定が微妙に違うのでそのへんでエラーが出たのだろうか。まー動いたから良しとしよう。
コメント