フック、そんなのもあるのか!! # CukeやRSpecの前後処理フック
Akabane.rbとかやってみたい今日この頃です。土曜の9:00AMからまるます屋とかで。まぁ私自身はだいぶ先まで土日のマイルは枯渇してるんですけど。
それはそうと、RSpecの全Example(it)やCucumberのすべてのシナリオで前後処理をしたくなることはありませんか? ありますよね。
たとえばconfgatronというgemがあって、設定をまとめる依り代になってくれるんですが、これがSingleton(≒グローバル変数)なので各テストの前後にちゃんとリセットしたい場合とか。
ドキュメントをあたってみたらちゃんと用意されていたのでメモです。
RSpec
Spec::Runner.configure(&block)のブロック中でbefore()とかafter()を書きます。Railsの人だとspec/spec_helper.rbあたりに書いてくださいな。
Spec::Runner.configure do |config| config.before(:each) do configatron.temp_start end config.after(:each) do configatron.temp_end end end
ExampleGroupのタイプ別にもかけられます。詳しくは http://rspec.info/documentation/before_and_after.html をどうぞ。
Cucumber
Cucumberの場合も同じような感じで書けます。features/support/env.rbあたりに書くか、まぁうまい感じに分離してよ、とWikiに書いてありました。
Before do configatron.temp_start end After do configatron.temp_end end
これもタグごとに実行できたりするみたいです。いろいろ調べてみてください。タグについてもいつか書きたいな。
http://wiki.github.com/aslakhellesoy/cucumber/hooks