これまでのrspec本勉強の復習
これまでメインアカウントのブログでrspecについて書いてきたことを復習して気になったところを簡単にまとめてみた。
?を末尾に持つメソッドの書き換え
receiver.hoge?.should == true は下記のようにも書ける
receiver.should be_hoge receiver.should be_a_hoge receiver.should be_an_hoge
receiver.has_key?.should == true は下記のように書ける
receiver.should have_key
個数を調べる
# home_team.players_on(field).length.should == 9 の書き換え home_team.should have(9).players_on(field) # collection.length.should == 37 の書き換え collection.should have(37).items # dozen_bagles.length.should be <= 12 の書き換え dozen_bagels.should have_at_least(12).bagels
レシーバの省略
subjectメソッドなどでレシーバを省略できる
describe Person do subject { Person.new(:birthdate => 19.years.ago) } it { should be_eligible_to_vote } end
describe RSpecUser do # RSpecUser.new の結果がレシーバ it { should be_happy } end
メソッドの実行前/実行後での変化をチェックする
lambda { User.create!(:role => "admin") }.should change{ User.admins.count }.by(1) lambda { User.create!(:role => "admin") }.should change{ User.admins.count }.to(1) lambda { User.create!(:role => "admin") }.should change{ User.admins.count }.from(0).to(1)