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)

これにより、両方photoad同じuser親オブジェクトが使用されるようになり、これまで発生していた検証の問題を回避できます。

于 2012-09-27T12:48:48.333 に答える