2011-05-20
RSpecとRcov導入
テスト駆動開発(test-driven development; TDD)なりビヘイビア駆動開発 (behavior driven development; BDD)では振る舞いの規定だとかデバッグ効率な意味でテストコードの作成は不可欠。今回はそんなこんなでテストフレームワークRSpecと、RSpecの出力結果をまとめてくれるRCovの導入を書く。
Test::Unitを使わないので
$ rails new depot -T
でプロジェクトを作る。すでにプロジェクトをつくってしまった場合には、
$ rm -rf test
で消してしまう。
./Gemfileに
gem 'rspec-rails'
を書いて、
$ sudo bundle install
bundleにインストールさせましょう。
$ rails generate rspec:install
以降から、作ったコントローラ等にrspec用のコードがでる。
すでに作ったものにたいして、RSpecの雛形を追加する場合は
$ rails generate rspec:controller users index
てな感じでRSpecコードを追加する。(余談ですがusers_controllerなのにuser indexって書いて単数と複数系の違いで1時間ぐらいつんのめった...)
実際にテストするときは以下で。
$ rake spec
./Gemfileに
gem 'rcov'
を書いて、
$ sudo bundle install
bundleにインストールさせましょう。
$ rake spec:rcov
coverage/index.htmlひらくと結果が出ます。
参考
http://ja.wikipedia.org/wiki/%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA
テスト駆動開発のテストは、テストか?−TDD から BDD へ
http://d.hatena.ne.jp/takihiro/20100922/1285116278
http://mitukiii.jp/2010/12/16/rspec-use-on-ruby-on-rails3/
http://jp.rubyist.net/magazine/?0023-Rspec
http://rakuto.blogspot.com/2006/11/rails-rspec-on-rails.html
- 12 http://pipes.yahoo.com/pipes/pipe.info?_id=6ffca3d513899ee44c0d1201c766e92c
- 12 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=mouse+on+the+keys-最後の晩餐-
- 6 http://pipes.yahoo.com/pipes/pipe.info?_id=5c957097ed152660234169b605fb3fa7
- 4 http://reader.livedoor.com/reader/
- 4 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4ADRA_jaJP429JP429&q=c+++デザインパターン+state サンプル
- 4 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBwQFjAA&url=http://d.hatena.ne.jp/ema25/20110410/1302408426&rct=j&q=rails apache mysql&ei=jGPXTca_F4S8vQOxr62pBw&usg=AFQjCNG7Qqlk7Sw-vIlu2oR-Hw3QFi7Tkg&sig2=_y40epgXA0eYRaE1Tt
- 3 http://www.google.co.jp/search?hl=ja&safe=off&client=firefox-a&hs=3TH&rls=org.mozilla:ja:official&q=freebsd+apache+mysql+ruby&aq=f&aqi=&aql=&oq=
- 2 http://172.16.109.1/wordpress/
- 2 http://d.hatena.ne.jp/keyword/Rails
- 2 http://ezsch.ezweb.ne.jp/search/?query=プリズム+貫井徳郎&start-index=6&adpage=3&ct=1301&sr=0101&t=20110527171605&filter=1

