Ruby on rails 如何在factoryGirl中制作不同的工厂对象?
用户模型工厂Ruby on rails 如何在factoryGirl中制作不同的工厂对象?,ruby-on-rails,ruby-on-rails-4,factory-bot,Ruby On Rails,Ruby On Rails 4,Factory Bot,用户模型工厂 factory :user do name Faker::Name.name provider 'facebook' provider_user_id '1232' email Faker::Internet.email encrypted_password Faker::Internet.password end 这是照片模型的工厂,它使用用户模型的对象 factory :photo do user FactoryGirl.create(:user) i
factory :user do
name Faker::Name.name
provider 'facebook'
provider_user_id '1232'
email Faker::Internet.email
encrypted_password Faker::Internet.password
end
这是照片模型的工厂,它使用用户模型的对象
factory :photo do
user FactoryGirl.create(:user)
image Rack::Test::UploadedFile.new(File.join(Rails.root,'spec','GIV_jpg_file_small.jpg')
end
现在在CommentFactory中,我们正在创建用户和照片的对象。但照片也有
用户的对象。因此factoryGirl为照片和评论对象提供了相同的用户对象。但我的要求是我需要不同的用户对象。一个用户对象用于photo factory,一个用户对象用于comment factory
factory :comment do
user
photo
content Faker::Lorem.paragraph
end
end
在这方面有人能帮我吗?
提前感谢。我认为您不应该在工厂内部运行FactoryGirl定义
factory :user do
name Faker::Name.name
provider 'facebook'
provider_user_id '1232'
email Faker::Internet.email
encrypted_password Faker::Internet.password
end
factory :photo do
user
image
end
factory :comment do
user
photo
content Faker::Lorem.paragraph
end
现在在测试套件中,您可以执行以下操作:
user1 = create(:user) # Or FactoryGirl.create(...) if you are NOT using RSpec
user2 = create(:user)
photo = create(:photo, :user => user1, :image = >Rack::Test::UploadedFile.new(File.join(Rails.root,'spec','GIV_jpg_file_small.jpg')) )
comment = create(:comment, :photo => photo, :user => user2);
好吧,我想你明白了:)