RSpecの使い方
Gemfileに以下の行を追加します。
gem 'rspec-rails'
rspecを読み込みます。
$ bundle
テストのひな形を作ります。
$ rails g rspec:install $ rails g rspec:scaffold Post $ rails g rspec:model Post
テスト用のデータベースを作ります。
$ rake db:migrate RAILS_ENV=test
テストを実行します。
$ rake
テスト例
$ vi spec/models/post_spec.rb
1: require 'spec_helper' 2: 3: describe Post do 4: 5: it "should return hogehoge" do 6: post = Post.create(:username => 'nabeta') 7: post.title.should eq 'hogehoge' 8: end 9: end
5〜8を追加する
テストを実行します。
$ rake
................*F............ Failures: 1) Post should return hogehoge Failure/Error: post.title.should eq 'hogehoge' expected: "hogehoge" got: "babababataitle" (compared using ==) # ./spec/models/post_spec.rb:7:in `block (2 levels) in <top (required)>'
であると、Fは失敗したテストがあることをしめす
初期データを作成する
- フィクスチャファイルを使う
$ mkdir spec/fixtures $ cp test/fixtures/posts.yml spec/fixtures
one: username: tanabe email: tanabe@example.jp body: MyText score: 1 two: username: kosuke email: kosuke@example.jp body: MyText score: 10
テストでフィクスチャを読み込みます。
describe Post do fixtures :posts # この行を追加 it "should return 2012" do # テスト対象のデータをフィクスチャファイルから読み込む # ":one"はフィクスチャファイル中のキーに対応する post = posts(:one) post.username.should eq "tanabe" end end
特定のテストファイルを実行する
$ bundle exec rspec spec/models/post_spec.rb