Edited at

Ruby on Rails Tutorialのテスト駆動開発でエラー

More than 3 years have passed since last update.


初めに

「Ruby on Rails Tutorial 第3章の3.2.1 テスト駆動開発」をやっていて自分の環境ではなかなかすんなりいかなかったので,その経過をメモしておく.

関係ありそうなgemのバージョンに関しては以下の通り.

rails (4.2.4)

capybara (2.5.0)

rspec関係 (3以降)


rspecコマンドの実行でエラー(その1)

下記のrspecコマンドを実行するとエラーが出る.

$ bundle exec rspec spec/requests/static_pages_spec.rb

テストが失敗するのではなく,以下のようなエラーメッセージが出る.


uninitialized constant Capybara (NameError)


「Rspec で uninitialized constant Capybara (NameError) エラー」を参考に

spec/spec_helper.rbに以下の2行を先頭に追記したら,上記のエラーは出なくなった.

ENV['RAILS_ENV'] ||= 'test'

require File.expand_path('../../config/environment', __FILE__)


rspecコマンドの実行でエラー(その2)

上記の修正をして再びrspecコマンドの実行すると,今度は違うエラーが出る.エラーメッセージは以下の通り.


ArgumentError: rack-test requires a rack application,


ここを参考にして,再びspec/spec_helper.rbに以下の1行を追加(さっき追加したところの下でいいみたい).

require 'rspec/rails'

これでRspecの実行自体ではエラーが出なくなる.

あとはチュートリアルに従ってhome.html.erbを書き変えて,"Sample App"が含まれるようにしてテストを実行するとテストにパスするようになる.


まとめ

結局,spec/spec_helper.rbに以下の3行を先頭に追記すればよいようです.

ENV['RAILS_ENV'] ||= 'test'

require File.expand_path('../../config/environment', __FILE__)
require 'rspec/rails'