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 件のコメント:
コメントを投稿