背景
Ruby on Rails チュートリアルを参考に、Rails 4.2.0
とRSpec 3.1.7
でWebアプリケーションの作成を行っている際、チュートリアルとのバージョンの違い(チュートリアルはRSpec2
)により、Capybaraのincludeでハマってしまいました。
問題
Rails Tutorial 3.2.1では、Capybaraを取り込むには下記の通りにspec/spec_helper.rb
に追記しろとありましたが、RSpec3で同様のことを行った場合、\`block in <top (required)>': uninitialized constant Capybara (NameError)
と出て怒られてしまいました。
RSpec.configure do |config|
.
.
.
config.include Capybara::DSL
end
解決
調べてみたところ、RSpec3からspec/rails_helper.rb
というファイルが新たに登場したとのことです。GithubのREADMEを見たところ、確かにThe default helper files created in RSpec 3.x have changedというリンクがあり、デフォルトで作るhelperが変わったよ!と書いてあります。すごく雑に読み解くと、今後はspec/rails_helper.rb
に書いてね!ってことらしいです。
というわけで、以下の通りに実装してみたところ、無事にCapybaraさんが動くようになりました。
RSpec.configure do |config|
.
.
.
config.include Capybara::DSL
end
追記
RSpec3 での Capybara を使用した E2E テストはspec/features
以下に書くのが正道なようです。
spec/features
以下では Gem さえ入っていれば、特に設定なく Capybara の DSL が使えました。