requests spec を書こう

区分
Rails
報告者

こんにちは、tahara です。

ちかごろ Rails のテストは requests spec がいいな、と思ってます。

メリットは

  • リクエストの view → controller → model → レスポンスの view と、ひととおりでテストできる。
    • 実運用にそくしたエンドツーエンドテストがあると安心感高い。
  • それでいて capybara-webkit などを使った features テストより速い。
  • config.use_transactional_fixtures = true のままで ok
  • ふつうに binding.pry が使える。

デメリットは

  • capybara-webkit などを使った features テストでは可能な js のテストができない。

では requests spec でのコツみたいなものを2つほど。

User-Agent を指定する

page.driver.header('User-Agent', 'Mozilla/5.0 (iPhone; ...')

foo.js, foo.coffee などの js ビューを返すリクエスト

ふつうにやると Accept ヘッダが js を受け付つけないもになっているようで js ではなく html のビューをレンダリングしようとして ActionView::MissingTemplate になってしまいます。 なので次のように Accept ヘッダを変えてやります。

def with_js_accept
  page.driver.header(
    'Accept',
    '*/*;q=0.5, text/javascript, application/javascript'
  )
  yield
ensure
  page.driver.header('Accept', nil)
end

it '...' do
  with_js_accept { click_on 'OFF' }
end

というわけで requests spec を書いていきたいと思います。

最後に、エンジニアとかプログラマとか募集中 です!

トップページに戻る

技師部隊からの
お知らせ

【求人】エンジニア募集しています。

本頁の来客数
八十七万千百七十六名以上(計測停止中)

メンバー一覧

アクトインディ技師部隊員名簿

アクトインディ技師部元隊員

アクトインディへ

カテゴリー

アクトインディ

aaaa