Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在factoryGirl中制作不同的工厂对象?_Ruby On Rails_Ruby On Rails 4_Factory Bot - Fatal编程技术网

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);
好吧,我想你明白了:)