Rails3+RSpecでのテストを勉強してみる (1)
ちょっと要件があり勉強する必要があったので色々勉強してみた。一応、Rails自体5年ぶりだし、RSpecなんて今回初めて使ったレベルなので
プロジェクトの生成
rails new sample -T -d mysql
何やらデフォルトがTest::Unit系なんですかね。RAILS_ROOTにtestってディレクトリに何やら色々作成されるのですが-Tオプションをする事で抑制する事が出来る模様げ。んで今回はMySQLを使うので-dで指定しておく
んでGemfileにrspec-railsな参照をぶち込んでおく。んで
rails g rspec:install
をするとRAILS_ROOT/specなディレクトリが作られる模様。ディレクトリだけならモデル作る時に作成はされるが、上記のコマンドやらないとspec_helper.rbとかは作られない模様
モデル作成
rails g model sample_model name:string
まぁ適当になんかモデル作る。んでここでdb:migrate辺りをしておく
app/models/sample_model.rb
とりあえずなんかメソッド生やす。とりあえず全件取って、それをRSpecでかつfixtureをぶちこんで件数をテストする的な
class SampleModel < ActiveRecord::Base
  attr_accessible :name
  def all
    return SampleModel.find(:all)
  end
end
spec/fixtures/sample_model.yml
データをぶち込むfixtureを作成する。spec/fixtures内にテーブル名.ymlなファイルを作って、あとはデータをガチガチに書いていくだけな模様
sample_model1:
  id: 1
  name: hoge
sample_model2:
  id: 2
  name: fuga
sample_model3:
  id: 3
  name: foobar
spec/models/sample_model_spec.rb
# encoding: utf-8
require "spec_helper"
describe SampleModel do
  fixtures :sample_models
  before do
    @model = SampleModel.new
  end
  it "データ件数をテスト" do
    samples = @model.all
    samples.size().should == 3
  end
end
できたら
rake spec
で実行みたいな感じな模様