--- layout: old_post title: 正月も明けたのでRSpec on Railsを使ってみるテスト permalink: /tatsuya/show/177-rspec-on-rails ---

正月も明けたのでRSpecを使ってみる!

1.セットアップ
まずrspecをインストール、gemなので簡単

gem install rspec -v 0.7.4 (rspec on railsの0.7.5が上手く行かないので0.7.4を。なんでだろ?)

Rails用のプラグインをインストール

./script/plugin install svn://rubyforge.org/var/svn/rspec/tags/REL_0_7_4/vendor/rspec_on_rails/vendor/plugins/rspec

でspecディレクトリ以下に諸々のファイルを作成する、らしい。

./script/generate rspec

2.試しにmodel "User" のspecを作ってみる

./script/generate rspec_model user

  # create  spec/fixtures/users.yml
  # create  spec/models/user_spec.rb

認証のspecとfixtureを書いてみる

  users.yml
  ----------------------
  hoge:
    id: 1
    name: hoge
    password: hoge

  user_spec.rb
  ----------------------
  specify "login is ok" do
    User.new({:name=>"hoge", :password=>"hoge"}).should_try_to_login()
  end

実行してみる
./script/rails_spec_server (別ターミナルで立ち上げておく)
./script/rails_spec spec/models/user_spec.rb

.F

1)
'User class with fixtures loaded login is ok' FAILED
#"tatsuya", "id"=>"1", 
./spec\models\user_spec.rb:11:

Finished in 0.071 seconds

2 specifications, 1 failure

むー失敗....。まあ動いたのでOKですな。

追記:
直したら成功したお。

./script/rails_spec spec/models/user_spec.rb

..

Finished in 0.12 seconds

2 specifications, 0 failures

#rakeで実行する場合、全体・コントローラ・モデルの順に

rake spec
rake spec:controllers
rake spec:models

とかでできるらしい。