Bacon さん before/after
RSpecなんてゴチャゴチャしててソース読む気にならないじゃん!そんなもん使えるか!
...と思ったかどうか分かりませんが、Ramazeさんはテストを記述するのに軽量RSpecとも言える Bacon を使っているんですよね。しかしこの Bacon、困ったことに after の呼び出しがどうにも変(0.9.0)。
describe "before/after in Bacon" do before do puts "*** before ***" end after do STDOUT.puts "*** after ***" end it "should call before() and after()" do true.should.be.false end end
として、これをテストしてみると。
before/after in Bacon - should call before() and after()*** before *** [FAILED] Bacon::Error: true.false?() failed ./test_bacon.rb:11: before/after in Bacon - should call before() and after() ./test_bacon.rb:10 ./test_bacon.rb:1 1 specifications (0 requirements), 1 failures, 0 errors
となり、テストに失敗した場合、after が呼び出されていないのが分かります。
一方RSpecでは、
describe "before/after in RSpec" do before do puts "*** before ***" end after do puts "*** after ***" end it "should call before() and after()" do true.should be_false end end
とすると、結果は次のようになります。
*** before *** *** after *** F 1) 'before/after in RSpec should call before() and after()' FAILED expected false, got true ./test.rb:11: Finished in 0.034183 seconds 1 example, 1 failure
というわけで、きちんと after が呼び出されました。素晴しい、やっぱりRSpec最高!!!
などと感心している場合ではないので、Bacon の方をきっちり直しておきたいところなのですが、どうやって直すべきか思案中です。でも時間がないので、とりあえず一番手抜きな修正方法でパッチを送っておこうかなぁ、と思います。そしたら作者さんが勝手にうまいこと直してくれるかも知れないし。