2012-08-24 19 views
8

Verilen iki model, bir uyarı 1 veya daha fazla Zipcodes olmalıdır Uyarı ve Posta Kodu: Ben FactoryGirl fabrikaları nasıl yazarımİç içe geçmiş Fabrikaları FactoryGirl ile nasıl tanımlarım?

class Alert < ActiveRecord::Base 
    attr_accessible :descr, :zipcode 

    has_many :zipcode 
    validates :zipcode, :length => { :minimum => 1 } 
end 

class Zipcode < ActiveRecord::Base 
    attr_accessible :zip 
    belongs_to :alert 
end 

böylece:

  • Posta Kodu fabrikaları kendi tanımlanır dosya
  • Uyarı fabrikaları kendi dosyalarında tanımlı
  • Uyarı, Zipcode tarafından tanımlanan fabrikada güvenilebilir.

Okuduğum tüm belgeler ve örnekler, ana fabrika dosyasında bulunan sınıfı tanımlamanızı, hepsini bir araya getirmenizi veya başka bir şekilde taviz vermenizi veya çalışmanızı beklemenizi bekliyor. Spec fabrikalarını ayrı tutmak için temiz bir yol yok mu?

cevap

12

Buradaki hile kapsayıcı sınıfın, tanımındaki bir has_many deyimine sahip olduğundan emin olmak için, Factory sınıfında bulunan sınıfı bir dizi olarak oluşturur. Örneğin: Spec/fabrikalarda/zipcodes.rb olarak

:

FactoryGirl.define do 
    factory :alert do 
    zipcode { Array.new(3) { FactoryGirl.build(:zipcode) } } 
    end 
end 
:
FactoryGirl.define do 
    factory :zipcode do 
    zip { 78701 + rand(99) } 
    end 
end 

Ve Spec/fabrikalarda/alerts.rb içinde

İlgili konular