rails 独学して軽くにちゃんまとめつくる

EverydayRailsRspec を読んだので Rspec をまとめてみた

TDD とは数学の証明問題で、答えをまず見て、答案用紙に途中式を書き込むイメージです。TDDをするときテストに書き込むのは結果(答え)です。アプリ開発においては望んでいる結果というのはすぐにイメージできます。 コントローラーのテスト

describe→describe→(context)→it

の順番で書くのだ。

モデルのテストのようにまず describe にコントローラーのクラス名を書き込む。

つぎに describe でメソッドとアクションを書き込む(GET #index, POST #create)。

インスタンスメソッドの検証やアクションのコードの中に条件分岐があるなら context で囲み、it で予想される結果を書く。基本的にこれを忠実に守っていくだけ。

describe, describe, context, it。

itに書く文章

GET の場合代入とページ移動の2つを書くのが基本

代入は

配列の場合 “populates an array of all モデル名の複数形 ”

文字の場合 “assigns the requested モデル名 to @変数名”

ページ移動は

renderの場合 “render the template :index”

redirectの場合 “redirects to template :index”

のようにかく

UPDATE や POST は context で条件分岐をする

正しい属性の場合 "with valid attributes"

間違った属性の場合 “with invalid attributes”

セーブ、更新するばあい "save(update) the (new) contact"

失敗したばあい “doesn’t save(update) the (new) contact”

it の中に書くこと

変数作成→移動→expect

が基本。

post

(有効な属性のとき)

it "saves the contact" do

attributes_for(:contact) の(:contact)とは何を表してるのか

これは FactoryGirl のなかのメソッドなのでファクトリーガールで作成したダミーデータを指している。だから (:contact)はファクトリーガールのテストデータのコードの中に

factory :contact do
 ○○○
end

というのがあるはず。それを指している。