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
さらに、ブロックを渡すこともできるので、工夫すればこんな書き方もできます。
- 言語設定を切り替えた状態でテストを走らせる
- ライブラリで複数の型に対応
など、色々応用できますね。