Torihaji's Growth Diary

Little by little, no hurry.

rails の rspec be matcherについて

  1. be_xxx — predicate matcher

オブジェクトの xxx? メソッドを呼び出して、その戻り値が truthy かを検証

# user.general_role? を呼び出す
expect(user).to be_general_role

user.valid? を呼び出す

expect(user).to be_valid

user.persisted? を呼び出す

expect(user).to be_persisted

be_ の後の部分に ? を付けたメソッドが自動的に呼ばれる仕組み

  1. be 単体 — truthy/falsy 判定

expect(value).to be # truthy であること(nil/false 以外)
expect(value).not_to be # falsy であること(nil または false)

  1. be_a / be_an — 型チェック

expect(user).to be_a(User) # user.is_a?(User) を検証

  1. be + 比較演算子

expect(count).to be > 0 expect(count).to be >= 1