テスト!テスト!テスト!

テストの基本的なことがやっとわかってきた。本を写経したお陰だ。写経の効果、侮り難し、ドラクエのレベルアップ音が2回くらい鳴った。
テストは大きく分けて二つのパターンがある。

  • 表示するだけのページのテスト
  • データ更新するページのテスト

表示するだけのページの流れはこんな感じ。

#該当のページにgetアクセス
get(:list_group)

#HTTPのレスポンスを確認
assert_response(:success)

#テンプレート名を確認
assert_template('list_group')

#テンプレートに渡したインスタンス変数がnilでないことを確認
assert_not_nil(assigns(:groups))

と、こんな感じ。
で、get(:list_group)のlist_groupはコントローラで定義されているメソッド、assert_template('list_group')のlist_groupはapp/view/モデル名に格納されているファイルを拡張子を除いて指定。

データを更新するページは

#更新前のデータ件数を取得
num_groups = Group.count

#パラメータを渡しPost
post(:create_group, :group => {:name => 'テストグループ'})

#HTTPのレスポンスを確認
assert_response(:redirect)

#リダイレクトされた先を確認
assert_redirected_to(:action => 'list_group')

#更新前のデータ件数に+1し現在のデータ件数と同じことを確認
assert_equal(num_groups + 1, Group.count)


はじめよう Ruby on Rails

はじめよう Ruby on Rails