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

編集ログイン 最終更新のRSS