LoginSignup
4
3

More than 5 years have passed since last update.

FactoryGirlのtraitをつけたもの(複数可)を定義する

Posted at

基本

spec/factories/user.rb
FactoryGirl.define do
  factory :user, class: 'User' do
    sequence(:name) { |n| "user#{n}" }
    sequence(:account) { |n| "account#{n}" }
    sequence(:email) { |n| "user#{n}@email.com" }
    password 'password'
    password_confirmation 'password'

    trait :not_activated do
      activated false
    end

    trait :activated do
      activated true
    end
  end
end

この用にUserを定義するとcreate(:user, :activated)のようにすることで、使うことができる。

traitを指定して新しく名前を定義する

ただ、traitが複雑になると、初期化部分が長くなるので、以下のように命名しておくと便利である。上のファイルの一番最後のTrait定義の後に書けばよい。今回は、traitが二個しかないので、あまり意味がないが、複数出てきたときに使える。

factory :activated_user, traits: [:activated]
factory :deleted_user, traits: [:deleted]

これで、create(:activated_user)として使うことができる。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3