2016-03-30 25 views
0

bir Has_many ilişkisi bir fabrika eklendiğinde hatası 'Fabrika kayıtlı değil'FactoryGirl: Ben 2 fabrika var

Spec/fabrikalar/cars.rb

Spec/fabrikalar/users.rb

dosyaları

Bir kullanıcının birçok arabası olabilir ve bu durum için özel bir özellik oluşturmak istiyorum. Arabam fabrikasında içine

:

FactoryGirl.define do 
    factory :car do 
    ... 

    trait :is_blue do 
     color 'blue' 
    end 
    end 

    factory :blue_car, parent: :car do 
    is_blue 
    end 
end 

Benim kullanıcı fabrikası Ben 'Fabrikası değil var benim 'user_spec' dosyasına 'user_with_cars' fabrika kullanmak istiyorum

FactoryGirl.define do 

    factory :user do 
    ... 

    trait :with_cars do 
     cars [ FactoryGirl.create(:blue_car) ] 
    end 

    end 


    factory :user_with_cars, parent: :user do 
    with_cars 
    end 

end 

kayıtlı: blue_car' hatası

Örnek:

context 'with cars' do 
    subject { create(:user_with_cars) } 

    it 'should make some stuff' do 
    expect(subject.cars).not_to be_empty 

    ... 
    end 
end 

cevap

1

Bir çözüm buldum.

İlişkileri oluşturma biçimimi değiştiririm. İlişkileri ekleyen özellikte 'after (: create)' geriçağırımını kullanıyorum.

Spec/fabrikalar/users.rb

FactoryGirl.define do 

    factory :user do 
    ... 

    trait :with_cars do 
     after(:create) do |user| 
     user.cars << create(:blue_car) 
     end 
    end 


    factory :user_with_cars, parent: :user do 
    with_cars 
    end 
end