サイト更新情報
[Categories]
agile | angularjs | barbecue | birthday | body scoop | car | chuork01 | dinner | domin life | drive | event | fes | fishing | friend | gunpla | javascript | life | lunch | photo | ps3 | rails | ruby event | sake | software-development | sports snowboard | study event | sushi | sweets | techmix-hokkaido | torne | travel | vegetable garden | vim | weight training | whiskey | work

Ogagaga Diary


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)でした。