tkymtk's blog

Ruby on Rails及びその周辺について調べたこと。Do whatever you want to do at your own pace.

FactoryGirl: build と createの違い

違い

  • build
    Build()メソッドはインスタンスをメモリ上にのみ記録する。

  • create
    create()メソッドはテストデータベースにも保存して、データを永続化させる。

使い分け

  • DBに書き込むのは時間がかかるので、DBに保存する必要がないときはbuild()を使う。
  • 属性のチェックだけの場合もbuild()で済む。

具体例

let(:user) { User.new(name: "foo", email: "foo@example.com") }
let(:user) { User.create(name: "foo", email: "foo@example.com") }

の代わりに

# spec/models/user_spec.rb
let(:user) { FactoryGirl.build(:user) }
let(:user) { FactoryGirl.create(:user) }

FactoryGirlでの定義

# spec/factories.rb
FactoryGirl.define do
  factory :user do
    name     "foo"
    email    "foo@example.com"
  end
end

リンク

参照元

FactoryGirlの使い方

間違いがあれば、ご指摘下さると幸いです。