RSpecのコントローラのテストで利用できる機能

アクセス

Getでアクセスする

get(action, params={})

#例
get(:index, :username => 'foo', :password => 'bar')

Postでアクセスする

post(action, params={})
#例
post(:index, :username => 'foo', :password => 'bar')

取得

レスポンスを取得する

reponse()

コントローラのインスタンス変数を取得する

assigns[変数名]

#例
user = assigns[:user]

セッションオブジェクトを取得する

session()

#例
session[:user].id.should == 1

flashの内容を取得する

flash()

#例
flash[:error_message].should be_blank

コントローラのテストで使うmatcher

レスポンスのステータスコード

response.should be_success

リダイレクト先

response.should redirect_to(:controller => 'login', :action => 'index')

テンプレート

response.should render_template('login')

Ruby on RailsでRSpecを使うときに使用するコマンドのまとめ

Ruby on RailsでRSpecを使うときに使用するコマンドのまとめ

RSpecとrspec-railsのインストール(Ruby on Rails 2.1.0以上の場合)

gem install rspec
gem install rspec-rails

#Ruby on Rails 2.1.0未満の場合はhttp://wiki.github.com/dchelimsky/rspec/railsを参考にしてください。

色づけして表示するならWindowsならwin32consoleが必要

gem install win32console

カバレッジテストに必要

gem install rcov

必要なファイルの作成

ruby script/generate rspec

RSpecのバージョンの確認

ruby script/spec -v

モデルの作成

ruby script/generate rspec_model モデル名 [フィールド名:データ型 …]

# 例
ruby script/generate rspec_model person name:string

コントローラの作成

ruby script/generate rspec_controller コントローラ名 [メソッド名 …]

#例
ruby script/generate rspec_controller person

ひな形の作成

ruby script/generate rspec_scaffold モデル名 [フィールド名:データ型 …]

#例
ruby script/generate rspec_scaffold purchase order_id:integer amount:decimal

任意のspecを実行

ruby script\spec ファイル名

# 例
ruby script\spec spec\models\blog_spec.rb

すべてのspecを実行

rake spec

モデルのspecを実行

rake spec:models

コントローラのspecを実行

rake spec:controllers

ヘルパーのspecを実行

rake spec:helpers

ビューのspecを実行

rake spec:views

データベースにfixtureファイルを読み込む

rake spec:db:fixtures:load

Specdocを出力

rake spec:doc

vendor/plugin 以下にあるspecを実行

rake spec:plugins

vendor/plugin以下にあるspecのSpecdocを出力

rake spec:plugin_doc

すべてのspecを実行し、rcovで測定
($RAILS_ROOT/coverage ディレクトリにファイルが作成される)

rake spec:rcov 

RSpec関連のタスクをすべて表示

rake --tasks spec

spec_serverを使用する

ruby script/spec_server &
ruby script/spec --drb spec/models

または、spec/spec.optsを編集して- -drb を追加する