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
で実行みたいな感じな模様