RSpec の before(:all) と before(:each) でハマったのでメモ
before(:all) と before(:each) と it の実行タイミングとか状態とかについて調べてみた。
コード
describe 'invalid user' do before(:all) do @value = 1 puts 'all' end before(:each) do @value += 1 puts 'each' end it { p @value } it { p @value } it { p @value } end
実行例
all each 2 .each 2 .each 2 .
before(:all) が実行されるのは最初の 1 回だけ。
before(:each) が実行されるのは各 it ごと。
どうやら、before(:each) で状態が変わっても次の it 実行時には元に戻るらしい。