FactoryGirl は いい女

FactoryGirlについて調べてた。

宣言

  • spec/factories/users.rb
FactoryGirl.define do
  factory :user do
    name 'hrysd'

    sequence :email { |n| "test_#{n}@email.com" }

    trait :active do
      status 'active'
    end

    trait :inactive do
      status 'inactive'
    end
  end
end

簡単な説明

  • sequence

ユニーク制限がある値のときに便利。 n が増えてく。

FactoryGirl.create(:user)
=> #<User id: 1, name: 'hrysd', email: 'test_1@email.com', status: nil>

FactoryGirl.create(:user)
=> #<User id: 2, name: 'hrysd', email: 'test_2@email.com', status: nil>
  • trait

たとえば、Userの状態とかで値をかえたいとき

FactoryGirl.create(:user, :active)
=> #<User id: 3, name: 'hrysd', email: 'test_3@email.com', status: 'active'>

FactoryGirl.create(:user, :inactive)
=> #<User id: 4, name: 'hrysd', email: 'test_4@email.com', status: 'inactive'>

最後に

はじめは状態ごとに書き分けるという愚作をとっていたのが、調べるときれいにかけるようにできてた。 工場女はすごい。