rspecを書いているとき、複数の条件で同じテストを書きたくなることがあります。
itブロックをコピペするのはスマートではありません。
こんなときのために、rspecではshared_example機能が用意されています。
require 'spec_helper' sahred_examples_for 'my tests' do |foo| before do # beforeブロックも使える puts foo end it "何かのテスト1" do end it "何かのテスト2" do end end describe "呼び出し側1" do it_behaves_like 'my tests' end describe "呼び出し側2" do it_behaves_like 'my tests', '引数渡せるよ' end
さらに、ブロックを渡すこともできるので、工夫すればこんな書き方もできます。
- 言語設定を切り替えた状態でテストを走らせる
- ライブラリで複数の型に対応
など、色々応用できますね。