edy hub

プログラミングやライフスタイルについて書き綴っています

Rspecを書く時に念頭においておきたいことのメモ

この記事の役割

  • 全体像をメインにメモをしていきます。
  • 各論も含むかもしれませんが、ボリュームが増大した場合は別記事に切り分けます。

体系的なまとめ

参考: RSpecを綺麗に書くための基本Rule - Qiita

この記事からの学び

命名規則

「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"