2011年05月21日 [長年日記]
■ RSpec on Rails のるびま記事写経
Rubyist Magazine - スはスペックのス 【第 2 回】 RSpec on Rails (コントローラとビュー編)
環境:Rails3.0.7,Ruby1.9.2
火曜日はgemが動かなくなりrvmをリセットして再構築していたので、 何もできていなかったので今日やりました。 いつものようにRails3の環境でのコマンドメモです。 ※ただし、rake stats と rcov はRuby1.9.2だとうまく動作しないので飛ばしています。
- 必要なものを一括でつくる場合
$ rails g controller blogs show create app/controllers/blogs_controller.rb route get "blogs/show" invoke erb create app/views/blogs create app/views/blogs/show.html.erb invoke rspec create spec/controllers/blogs_controller_spec.rb create spec/views/blogs create spec/views/blogs/show.html.erb_spec.rb invoke helper create app/helpers/blogs_helper.rb invoke rspec create spec/helpers/blogs_helper_spec.rb
- spec だけ作成する場合
$ rails g rspec:controller blogs show create spec/controllers/blogs_controller_spec.rb create spec/views/blogs create spec/views/blogs/show.html.erb_spec.rb
RSpec on Rails だと Controller、View、Helper のテストは別々にできますね。Rails標準だと Model だけ UnitTest だったはず。
- とりあえず実行してみる
$ rspec -c spec/**/*_spec.rb Pending: BlogsHelper add some examples to (or delete) /Users/ogagaga/01 Ruby/rails3_dev/myblog/spec/helpers/blogs_helper_spec.rb # Not Yet Implemented # ./spec/helpers/blogs_helper_spec.rb:14 Finished in 0.40959 seconds 9 examples, 0 failures, 1 pending
- BlogsController だけTestしてみる
$ rspec -cfs spec/controllers/blogs_controller_spec.rb BlogsController GET /show/:id リクエストは成功すること Finished in 0.24623 seconds 1 example, 0 failures
- Blogインスタンスのロード確認(実装を書いてないので失敗する)
$ rspec -cfs spec/controllers/blogs_controller_spec.rb BlogsController GET /show/:id リクエストは成功すること :idで指定したブログをロードしていること (FAILED - 1) Failures: 1) BlogsController GET /show/:id :idで指定したブログをロードしていること Failure/Error: assigns[:blog].should == blogs(:kakutani) expected: #<Blog id: 1, name: "角谷HTML化計画", created_at: "2011-05-21 15:51:25", updated_at: "2011-05-21 15:51:25"> got: nil (using ==) # ./spec/controllers/blogs_controller_spec.rb:21:in `block (2 levels) in <top (required)>' Finished in 0.25032 seconds 2 examples, 1 failure
- BlogsController#showを実装する
class BlogsController < ApplicationController def show @blog = Blog.find(params[:id]) end end
- 再び spec を実行
$ rspec -cfs spec/controllers/blogs_controller_spec.rb BlogsController GET /show/:id リクエストは成功すること :idで指定したブログをロードしていること Finished in 0.41056 seconds 2 examples, 0 failures
今日はこれでおしまい
■ 筋トレ
先週はニセコキャンプをしていたので、今週はしっかりと行ってきた。 左膝がまだ完治しないので上半身の筋トレとバイクの体力測定をしてきました。 体力レベルは4(Good)でした。