この記事の役割
- 全体像をメインにメモをしていきます。
- 各論も含むかもしれませんが、ボリュームが増大した場合は別記事に切り分けます。
体系的なまとめ
この記事からの学び
○命名規則
「AAメソッドは、BBの時、CCをDDします。」
AA : Describe → コントローラーのメソッド名を表記
describe 'GET #show' describe 'GET /api/v1/users'
BB : Context → 状況を表記
when/withで始める
context "when book is present" context "with valid params"
CC : Subject → テスト対象を表記
# eqの場合 subject{ assings(:book) } subject{ Book.find(1)} # change/render/redirect/http statusの場合 subject {Proc.new { get: index }} subject {Proc.new { get :show, id: 1 }} subject {Proc.new { get :new, id: 1 }} subject {Proc.new { get :edit, id: 1 }} subject {Proc.new { post :create, id: 1, book: @valid_params }} subject {Proc.new { patch :update, id: 1, book: @valid_params }} subject {Proc.new { destroy :delete, id: 1 }}
DD : it → テスト対象に対する動詞を表記
# eqの場合 it "主語 is 目的語" it "主語 has 目的語" # changeの場合 it "create 目的語" it "update 目的語" it "delete 目的語" # renderの場合 it "render the template名" # redirectの場合 it "redirect to path名" # http statusの場合 it "returns http ok" it "returns http success" it "returns http 204"