rspecの導入と、routes.rbのテストの書き方のメモ。rails new でプロジェクトを作成したら、ここまでやっておくと後々楽です。
環境
- mac mountain lion
- rails new でプロジェクトを作成済
- ruby2.1.0, rails4.0.3
Gemfileに記載
group :test, :development do
gem "rspec-rails", ">= 2.11.4"
gem "factory_girl_rails", ">= 4.1.0"
end
group :test do
gem "database_cleaner", ">= 0.9.1"
gem "email_spec", ">= 1.4.0"
#gem "cucumber-rails", ">= 1.3.0", :require => false
#gem "launchy", ">= 2.1.2", :group => :test
#gem "capybara", ">= 2.0.1", :group => :test
end
Gemfileの内容をinstall
bundle install
rspecをinstall
rails generate rspec:install
create .rspec
create spec
create spec/spec_helper.rb
上記のファイルが作成されていればrspecの準備は完成。
続いてrspecの動作を確認。
今回はサンプルでsiteコントローラーを作成。その後、routes.rbのテストを記載してrspecの動作を確認する。
コントローラーを作成
rails generate controller site
create app/controllers/site_controller.rb
invoke erb
create app/views/site
invoke rspec
create spec/controllers/site_controller_spec.rb
invoke helper
create app/helpers/site_helper.rb
invoke rspec
create spec/helpers/site_helper_spec.rb
invoke assets
invoke coffee
create app/assets/javascripts/site.js.coffee
invoke scss
create app/assets/stylesheets/site.css.scss
site_controller_spec.rbが作成されています。
routes.rbファイルでroot設定
root 'site#index'
site_controller.rbにindexメソッドを記載(なくても今は別に問題ない)します。
その後、/spec/routing/*の場所にsite_route_spec.rbを作成します。
site_route_spec.rbのコードは以下のように記載
require 'spec_helper'
describe "routing for site" do
describe 'GET root_path' do
subject { {:get => root_path} }
it { should be_routable }
it { should route_to :controller => 'site', :action => 'index' }
end
end
これで準備は終了。コマンドでrspecを動かします。
bundle exec rspec spec
*..
Finished in 0.00838 seconds
3 examples, 0 failures, 1 pending
うまく動きましたね。これでrspecの準備は完了です。
テストの粒度はプロジェクトによりまちまちですが、WEBアプリのrailsならroutes、controller、modelをやれば十分だと思います。
では。
参考サイト
この記事がお役にたちましたらシェアをお願いします