1

我有以下工厂:

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 再次使用同一个用户,而不是尝试用同一个工厂创建另一个用户?

4

1 回答 1

3

确保使用相同父级的最简单方法是在测试期间将父级传递到工厂创建中。例如:

@user = FactoryGirl.create(:user)
@photo = FactoryGirl.create(:photo, user: @user)
@ad = FactoryGirl.create(:ad, user: @user)

这将确保两者都photo使用ad相同user的父对象,这样您就可以避免遇到的验证问题。

于 2012-09-27T12:48:48.333 回答