用户模型的工厂
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
现在在评论工厂中,我们正在创建用户和照片的对象。但照片也有 用户的对象。因此,factoryGirl为照片和评论对象提供相同的用户对象。但我的要求是我需要不同的用户对象。照片工厂的一个用户对象和评论工厂的一个用户对象。
factory :comment do
user
photo
content Faker::Lorem.paragraph
end
end
在这方面,有人能帮助我吗? 提前谢谢。
答案 0 :(得分:1)
我认为你不应该在工厂内部运行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);
嗯,我觉得你明白了:)