Rails3+RSpecでのテストを勉強してみる (1)

2012-09-07T00:00:00+00:00 Ruby Rails

ちょっと要件があり勉強する必要があったので色々勉強してみた。一応、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

で実行みたいな感じな模様

Rails3+RSpecでのテストを勉強してみる (2) - RSpecでのコードカバレッジ - Google API Client Library for JavaScriptを使ってAnalytics APIに接続するメモ (2) - dimensionsとかmetricsとか -