WIP

FactoryGirlの基本

created at 2016.10.21
updated at 11ヶ月前 ago
vsanna / public Rspec

ref

http://tech.grooves.com/entry/2015/04/28/173025#build_stubbed_strategy loading loading loading

FactoryGirlはテスト用に仮のインスタンスを生成するツール。
fakerなどと組み合わせて名前、アドレスなどを適当にもったUser, Candidateなどを生成できる。

主な手順は
1. ファクトリを作る
2. ファクトリをRspecで利用する

の2つ。

ファクトリの活かし方が幅広い。

ファクトリーを作る

ファクトリーはクラス毎に作る。
属性についてはクラス内の最低限の属性についてのみ値を定義する。
最低限というのは、バリデーションを通すのに必要なものという意味。
ちなみにファクトリ名は全ファイル内でユニークでないといけませんのでご注意。

FactoryGirl.define do
 # クラス名=ファクトリ名
  factory :user do
    first_name "John"
    last_name  "Doe"
    admin false
  end

  # クラス名とファクトリ名を変える場合はclassを明示的に指定
  factory :admin, class: User do
    first_name "Admin"
    last_name  "User"
    admin      true
  end
end

定義したファクトリを利用する

以下のようにいろんな使い方ができる

# インスタンスを生成(ただし未保存)
user = build(:user)

# インスタンスを生成(保存済み)
user = create(:user)

# インスタンス生成に使われる属性集合を返す
attrs = attributes_for(:user)

# スタブオブジェクトを生成
stub = build_stubbed(:user)

# インスタンス生成のためにブロックを渡すパターン
create(:user) do |user|
  user.posts.create(attributes_for(:post))
end

shareシェアする

forumコメント

まだコメントはありません!
ログインしてコメントを残す
{{comment.user.name}} on {{commentCreatedAt()}}

content_copy前後のイシュー

{{message}}