ver.2橋本亮介の個人ブログ。WARNINGがでた。/home/ubuntu/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:310)と出て困った。“#{Rails.root}/public/404”にしたらでなくなりました。value=”admin”>admin</option>...</select>とかあるときに選択できる値を持つoptionタグががあることをテストするためにXPathを使いました。XPathは避けていたがそれほど難しくはなさそうです。have_selector(:xpath,’//select[@id=”user_role”]/option[@value=”admin”]’)endこちらを参考にしました。Viewのテストには重宝しそうです。15章から18章コメントを残す■15章ではRSpecを快適に使うためのTipsが書かれています。RSpec実行のオプションやエディタ、オートメーション化、Rake、RCovなどが紹介されています。私はすでに紹介されているいくつかを開発環境に導入済みです。Railsを使っているのでRake、それからrspec_rails、RCovはよく知っています。Autotestは使っていませんが、同様の機能をGuardで実装しています。エディタはTextMateの評判がいいのですが、LinuxなのでGeditにプラグインをいくつか入れて使っています。Redcarも使ってみたのですが、日本語がどうも、、私には合いませんでした。■16章ではRSpecをカスタマイズして使う方法が紹介されています。・実行するサンプルとしないサンプルを分ける。・カスタムマッチャ・カスタムフオーマッタなどです。中でもカスタムマッチャはよく使いそうです。RSpecをカスタマイズするのはもう少しデフォルトの状態に慣れてからでもよさそうです。デフォルトの状態でも十分に高機能だと感じていますし、現段階でわからないことがあってもいいかなぁと思います。■17章は「Cucumberの紹介」とあります。任意の数のステップいくつかのポイントが説明されています。日本語で書くと<だれだれ>が<なになに>したいので<なぜなら>これこれこういうことをしたいからだのようになります。jaと記述するとCucumberが日本語でも記述できます。英語なのでどうしても不自然ではありますがそれでも日本語で記述できるのはありがたいことです。対応する日本語訳は次のようにするとヘルプを見ることができます。ja・シナリオは成功するシナリオ(ハッピーパス)から書き始めて、いくつかの特異なケースを追加していきましょう。・シナリオに対し、ステップを追加していきます。そのときGiven、When、Then、And、Butで始まるステップキーワードを用います。日本語だと前提、もし、ならば、かつ、しかしとなります。・この時点でcucumberを実行するとステップのコードが出力されるのでそれを利用して、ステップファイルを作成しますが、それについては後で説明するとのことです。・ケースバイケースでステップを一つ一つ細かく書いたり(命令型)、ざっくり書いたり(宣言型)しましょう。・シナリオが多い場合はfeaturesディレクトリの中に任意のフォルダに分けてfeaturesファイルを整理しましょう。・タグを活用しましょうシナリオにタグをつけると後で、そのシナリオだけ実行したり、させなかったりできます。■18章ではCucumberについてのより詳しい説明がされます。シナリオに定義されているステップの中で、ステップの内容が定義されていないと、cucumberを実行した際に定義すべきコードが出力されますので、それをfeatures/step_defenitions/の中の任意のファイルに定義します。定義は正規表現になっており、キャプチャグループが引数として扱われます。正規表現そのものを書くことは少ないですが、すこしでも使ったことがないと理解が難しいかもしれません。使ったことがない人へのヒントとしては「/」で始まって「/」で終わる。「/^」が文頭で「$/」が文末。「([^”]*)」というのは簡単にいう「なんらかの文字」という意味です。この()カッコでくくられたものがキャプチャグループです。それでそこにマッチした文字列が引数となりますよ。RSpecと同じようにフックもあって、タグごとに別のフックを付けられたりすることも説明されています。カスタマイズはWorldオブジェクトを使います。ステップ定義の中で別のステップを呼び出せる説明されています。さまざまなログインをまとめて定義したいとき。|user_role|endとするといいらしいです。別のステップを呼び出すときにそのステップに引数を渡す場合「”」はエスケープしましょう。\”#{user_role}\”@example.com”endステップ内のテーブルを用いて、まとめて複数のテストをしたり、初期設定であらかじめデータを作っておくようなテストをしたりできます。このことははじめのほうの章で簡単なアプリケーションを作ったときに体験しました。17章と18章はCucumberのざっとした概要になっており、前の章で簡単なアプリケーションを作成するときに使ったテクニックのおさらい+もうちょっと突っ込んだ内容になっています。Cucumberのリファレンスがあればそれを読んだほうがより詳しく知れますし、RSpec同様読んだからといってマスターするまでは至らない程度のざっくり感です。19章はいよいよRailsではどのようにすればよいのかという一番知りたかった内容が書かれています。衝撃はゲーマーにゲームをやめさせる力があるあーやっちまった。