Ruby on Rails Tutorial (39)
以下な宿題について確認な朝練。
- expect do ... end.to change なあたりの確認
- subject { page } な記述について確認
change マッチャ
むむ、昔は以下なナニだった模様。
lambda { team.add_player(player) }.should change(roster, :count).by(1)
とは言え、以下な書き方はクラス名が渡されてるあたりが若干微妙。
it "should increment the Relationship count" do expect do xhr :post, :create, relationship: { followed_id: other_user.id } end.to change(Relationship, :count).by(1) end
あと
にてメソッドチェイン云々な記述あり。
メソッドチェイン
change マッチャでは値の変更を比較するメソッドをチェインできます。チェインできるメソッドの種類と、それぞれの意味は次の通りです。メソッドチェインなし
「receiver.send(message)」が評価後にとにかく変わることを期待します (should_notの場合は変わらないことを期待します)。
by(value)
「receiver.send(message)」の評価前と評価後での値の違いへの期待の差分が value であると期待します。
from(old).to(new)
評価前には old だった「receiver.send(message)」の値が、評価後に new へと変化していることを期待します。
to(new)
評価前の値が何であれ、「receiver.send(message)」の値が評価後に new へと変化していることを期待します。
スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)より引用
読んでるはずなんだけど記憶に無い、ってことはスルーしてるのか後天性記憶不全なのか。
subject { page } の件
これ、capybara なのかな。継続確認しつつ何かあればメモを追記の方向にて。