2014年2月25日火曜日

rails4の準備3 rspecの使用とroutes.rbのテスト

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をやれば十分だと思います。

では。


参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...