Cucumberのメモガキ
前準備
- とりあえず Emacs の拡張を入れる
- はじめる! Cucumber を読む
- The RSpec Book を読む
- 実践テスト駆動開発を読む
実践
- Guard で自動実行させる
- まず、シナリオの粒度に悩む
- 悩んでも仕方無いから、とにかく書いてみる
- Cucumber の本である上の2冊は情報が古いため、そのままやっても動かないことがある
- cucumber-rails はデフォルトのステップ定義を用意してくれない!
- tag の指定方法が変わっている!
- –tags @piyo で指定できる
- etc, etc, etc,,,,
- 日本語情報が少ない(古いものが多い)から、英語で調べるのが吉
- でも結局公式wikiで答えが見つかる事も多い
- ステップ定義は Capybara との戦いになりがち
- やっぱり調べ物には公式wikiが良かったりする
- 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 でやってる?
- エンドツーエンドテストを書く習慣がない?