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)でした。
[ツッコミを入れる]





