Webratで50x系エラーを通す

cucumber-railsを使っているみなさま、Webratは500系のサーバエラーが返ってくると、サーバ側のバグとしてPageLoadErrorをあげてくれます。
これは、だいたいにおいてありがたいんですが、稀に、要件として500番台を返すことを検証するテストを書きたくなります。そんなときのTips。

Beforeなんかで以下のようにすると、500番台も止まらずに次の検証に進めます。#nodocなのでご利用は計画的に。

class << webrat_session
  def success_code?
    (200..599).include?(response_code)
  end
end

success_code?に500を含めるのが何とも気持ち悪いですが、「このテストは500番台が返るのを想定しているのだから、500台が来るのはsuccessの範囲内だ!!」という自己暗示でどうか。

実際はtagと組み合わせて、次のようにしておくとよりよい感じです。

Before("@expect_server_error") do
  class << webrat_session
    def success_code?
      (200..599).include?(response_code)
    end
  end
end