我有以下工厂:
factory :user do
name 'Henk'
email 'foo@bar.co'
password 'foobar'
password_confirmation { |u| u.password }
end
factory :photo do |ph|
user
ph.subtitle 'abc'
ph.photo { fixture_file_upload( Rails.root.join( 'spec', 'fixtures', 'files', 'test-file-one.png' ), 'image/png') }
end
factory :ad do |ad|
user
name 'Kip'
reason 'Ik wil gewoon hele mooie nieuwe, om een beetje van te eten.'
price 69.15
end
照片和广告都属于用户,但照片也属于广告。这是一个问题,因为每当我测试Photo和Add之间的关系时,用户验证就会正确地抱怨使用该电子邮件的用户。如何告诉rspec再次使用同一个用户,而不是尝试使用相同的工厂创建另一个用户?
答案 0 :(得分:3)
确保使用相同父级的最简单方法是在测试期间将父级传递给工厂创建。例如:
@user = FactoryGirl.create(:user)
@photo = FactoryGirl.create(:photo, user: @user)
@ad = FactoryGirl.create(:ad, user: @user)
这将确保photo
和ad
使用相同的user
父对象,这样您就可以避免遇到的验证问题。