概要
rspec hook | before/after
詳細
rspecのhookについて。
before/afterフックは各exampleの処理前後に処理を追加することができます。
引数に「:each」「:all」のどちらかを指定することで1回だけ実行するか、
各exampleごとに実行するか設定できます。
また、RSpec.configureのbefore/afterフックを設定することで
テストケース全体に対する前処理・後処理を設定できます。
下記に設定サンプルを例示します。
構成
$ tree ┣ lib | ┗ hoge.rb ┗ spec ┣ hoge_spec.rb ┗ spec_helper.rb
hoge.rb
# encoding: utf-8 class Hoge 5.times do |i| define_method "hoge#{i}".to_sym do puts " hoge#{i}" end end end
hoge_spec.rb
require 'spec_helper' require 'hoge' describe Hoge do before(:all) do puts " before all" end before(:each) do puts " before each" end after(:all) do puts " after all" end after(:each) do puts " after each" end 5.times do |i| it "hoge#{i}" do Hoge.new.send "hoge#{i}" end end end
spec_helper.rb
RSpec.configure do |config| config.treat_symbols_as_metadata_keys_with_true_values = true config.run_all_when_everything_filtered = true config.filter_run :focus config.before(:all) do puts "config before all" end config.before(:each) do puts " config before each" end config.after(:all) do puts "config after all" end config.after(:each) do puts " config after each" end end
テストを実行してみる
$ rspec Run options: include {:focus=>true} All examples were filtered out; ignoring {:focus=>true} config before all before all config before each before each hoge0 after each config after each . config before each before each hoge1 after each config after each . config before each before each hoge2 after each config after each . config before each before each hoge3 after each config after each . config before each before each hoge4 after each config after each . after all config after all Finished in 0.00103 seconds 5 examples, 0 failures