title | category | layout |
---|---|---|
FactoryGirl |
Ruby libraries |
default-ad |
FactoryGirl.define do
factory :user do
first_name 'John'
last_name 'Doe'
birthdate { 21.years.ago }
admin false
sequence(:username) { |n| "user#{n}" }
end
end
# Also available:
factory :user, class: 'User'
factory :user, aliases: [:author]
FactoryGirl.build(:user)
build(:user) # not saved
create(:user) # saved
attributes_for(:user) # hash
build_stubbed(:user) # stubbed out attributes
build(:user, name: 'John')
create_list(:user, 3)
build_list(:user, 3)
factory :post do
association :author, factory: :user
association :author, factory: [:user, :admin]
author # assumes there's a factory :author
end
factory :post do
after :create do |post|
create :theme, post: post # has_one
create_list :comment, 3, post: post # has_many
end
end
factory :user do
trait :admin do
admin true
end
end
create :user, :admin
factory :user do
first_name 'John'
factory :sample_user do
first_name { FFaker::Name.first_name }
end
end
# create :sample_user
# Also: factory :sample_user, parent: :user
factory :user do
transient do
upcased true
end
after :create do |user, options|
user.name.upcase! if options.upcased
end
end
create(user, upcased: true)
test/factories.rb
spec/factories.rb
test/factories/*.rb
spec/factories/*.rb