RSpecに関して勉強を始めて1週間たったのですが、なかなか日本語での情報もなく、バージョンが違ったりすることでも戸惑い、テストをするためのコーディングにえらい時間がかかり、本末転倒の状態にありました。よい情報はないことかと調べたら「The RSpec Book」という本をみつけ、さっそく購入。
この手の洋書を翻訳したような本は、サンプルを進めていくとつまづくことも多いので、記録を残すことにしました。
この記録はこの本を読んで行く中での感想や考察あるいは単にメモです。 要点をまとめたようなものではありません。つまりこの本を手に取っている方が、別の人間がどのようにこの本を読んだか知ることによって理解を深めることに役立つか、この本を買おうか悩んでいる人がざっとどんな本なのかを知ることに役立つか、そのどちらかだとおもいます。
まず、適当なフォルダを作って、
gem install rspec –version 2.0.0
gem install cucumber –version 0.9.2
を実行する。ちなみに環境はWindows7上のVirtualBox上に作ったUbuntuです。
cucumberのインストール時になにやらエラーが発生。
ERROR: Failed to build gem native extension.
ネットで調べたがよくわからず無視、とにかく先に進みます。
■14ページの
cucumber features
で予想された出力と違うものが出現。
undefined method ‘describe’ for main:object (NoMethod Error)
ネットで調べると同様のエラーがありました。
どうやら本ではファイルのおき場所が
・/hello/数字/features/greeter_says_hello.feature
・/hello/数字/greeter_spec.rb
となっているが、先述のリンク先のように
・/hello/数字/features/greeter_says_hello.feature
・/hello/数字/spec/greeter_spec.rb
としなければなりませんでした。疑問はのこるものの、先に進みます。
■3章を通過したところで疑問は増していきます。サンプルどおりにコードを作っていっても実行するところがなく、「あ、これは説明だけなのね」とわかります。
■気にせず4章に入ってすぐに「ダウンロードファイル」とあります。なに~~。このような本にダウンロードコードがあることは普通でしょうが、こんな本の途中にURLが記述されているのは珍しい。。3章までで不要なコードを書かされた(構成上しかたのないことであるとはわかっていますが)ので今後はダウンロードしたコードを使うことに決めました。
先ほどのディレクトリの間違いもここではっきりしました。ダウンロードファイルのなかでは正しく、本通りにすすめると必ずエラーになるようです。
■5章の終わりにプログラムを実行する場面があります。環境によってちょっとコードを変えなければいけないようですが、私の環境ではダウンロードしたコードそのままで実行できました。
■ひとつのコードを書いては説明があり、それが9章まで続きます。丁寧すぎていらいらするぐらいです。この時点ではじめのプロジェクトは終了し、アプリケーションを一つ作ったことになっています。 しかし、計画>コーディング>デバッグやリファクタリングというやり方になれすぎてしまっているのか、そもそもテストを書くことへの難しさを感じざるを得ず、生産性が本当にあがるという実感が持てません。単純なアプリケーションを作るだけでもコレだけのテストが必要であることを思うと、好意的に見れば、もしこれを行わない場合、アプリケーションのリリース時には未テストの状態である項目がどれだけあるか、悪寒を感じます。一方で、コレだけのテストを実装前に書き出すことができるのか、などという漠然とした不安があります。ただこのBDDという手順を踏むことで別の不安を取り除くことができ、テストの書き方さえ慣れてしまえばそこにかかる労力よりもはるかに多くのものを得られるような期待感をもって10章へ進みます。
ピンバック: 思考の海2014/12/17(BDDって何者?考え方を知りたい) - Webエンジニアになりたくて