Cucumberファーストインプレッション

Oct 1, 2012  

Cucumberのメモガキ

前準備

実践

  • Guard で自動実行させる
  • まず、シナリオの粒度に悩む
    • 悩んでも仕方無いから、とにかく書いてみる
  • Cucumber の本である上の2冊は情報が古いため、そのままやっても動かないことがある
    • cucumber-rails はデフォルトのステップ定義を用意してくれない!
    • tag の指定方法が変わっている!
      • –tags @piyo で指定できる
    • etc, etc, etc,,,,
    • 日本語情報が少ない(古いものが多い)から、英語で調べるのが吉
    • でも結局公式wikiで答えが見つかる事も多い
  • ステップ定義は Capybara との戦いになりがち
  • Capybara には HTTP メソッドの PUT と DELETE がなくて詰みかける
    • @javascript タグをつけるのが正解
    • Capybara の JS-driver は capybara-webkit が良い
      • Qt を入れる必要があって若干ハードルが高いけど、selenium よりこっちが良い
      • 何より、ブラウザが立ち上がらないのが素晴らしい
  • Capybara さんには、save_and_open_page というメソッドでその状態の HTML をブラウザで開く機能があってめっちゃ便利
    • 前提 /^デバッグ$/ { save_and_open_page } みたいなステップを定義しておくと幸せになれると思う
  • ちなみに、@wip タグを実行する方法は以下。というか cucumber.yml に書いたプロファイルを実行する方法。この方法が見つけられずに辛かった(ちなみに公式wikiに載ってた)(当たり前だ)。
$ cucumber --profile @wip

悩み

  • シナリオの粒度
  • CRUD のような割と定型的なシナリオをどう書くか

感想

  • やはり、日本語が使えるのは大きい気がする
  • リズムに乗るとガシガシ書けて楽しい
  • が、割とカオスになりがちなのできちんとリファクタしていきませう(自戒)
  • エンドツーエンドテスト→ユニットテスト→実装という流れは、思っていた以上に有効な気がしてきている
  • これから積極的に使っていく
  • でもこんなに情報が少ないのはなぜだろう?
    • RequestSpec でやってる?
    • エンドツーエンドテストを書く習慣がない?