RSpec で同じ検証を複数のテストデータに対して行いたい
いろんなサンプルに対して「全部のデータ/パターンでちゃんと処理できているかを検証したい」という場合、RSpecだと書き辛いなぁ、と思ったんですが、良く考えれば何のことはない、specファイルも普通のRubyスクリプトなんですよね。
というわけで
# xxx_spec.rb # もちろん普通に書いてもいい。 context "BDDで作るよ" do specify "一歩一歩作っていきますよ、そりゃもう。" do end end # 以降はいろんなパターンを通しまくりたい Dir.glob("path/to/test_data/*") do |test_data| context "#{test_data} をホゲる場合" do setup do @process = lambda{ result = Hoge.process(test_data) } end specify "処理例外が発生しないこと" do @process.should_not_raise Hoge::ProcessError end specify "処理結果がnilでないこと" do result = @process.call() result.should_not be(:nil) end end end
でOKでした。当然といえば当然ですが。