RSpec(1.3.2)のGlobal after and before
RSpec(1.3.2)のGlobal after and beforeについて調べたメモです。
(今さら1.3.2って。。)
- すべてのexamplesで共通に適用されるbefore/afterを書くことができる。spec_helper.rbにSpec::Runner.configureで書くのがふつう。
- before/afterの実行ポイントはsuite、all、eachを指定できる。
- Specファイル単位のbefore/afterは用意されていない。
Specファイル単位のbefore/afterを書きたかったので、調べたのですが、やっぱりないんですね。。やっぱりファイル単位みたいな考え方はないということで。。ファイルをロードするところで無理矢理突っ込むしかないかなあ。。
spec_helper.rb
Spec::Runner.configure do |config| config.before(:suite) { puts '[Config] before suite'} config.before(:all) { puts '[Config] before all'} config.before(:each) { puts '[Config] before each'} config.after(:suite) { puts '[Config] after suite'} config.after(:all) { puts '[Config] after all'} config.after(:each) { puts '[Config] after each'} end
hoge_spec.rb
require './spec_helper' describe 'Hoge' do before(:all) do puts '[Hoge] before all' end before do puts '[Hoge] before each' end after do puts '[Hoge] after each' end it 'example1' do puts 'example1' end it 'example2' do puts 'example2' end after(:all) do puts '[Hoge] after all' end end
fuga_spec.rb
require './spec_helper' describe 'Fuga' do before(:all) do puts '[Fuga] before all' end before do puts '[Fuga] before each' end after do puts '[Fuga] after each' end it 'example1' do puts 'example1' end it 'example2' do puts 'example2' end after(:all) do puts '[Fuga] after all' end end
実行結果
ootas-MacBook-Air@sogo:rspec-exam $ spec hoge_spec.rb fuga_spec.rb [Config] before suite [Config] before all [Hoge] before all [Config] before each [Hoge] before each example1 [Hoge] after each [Config] after each .[Config] before each [Hoge] before each example2 [Hoge] after each [Config] after each .[Hoge] after all [Config] after all [Config] before all [Fuga] before all [Config] before each [Fuga] before each example1 [Fuga] after each [Config] after each .[Config] before each [Fuga] before each example2 [Fuga] after each [Config] after each .[Fuga] after all [Config] after all Finished in 0.024466 seconds 4 examples, 0 failures [Config] after suite