8

FactoryGirl, korunan özniteliğimi user.confirmed ayarlamaz. Burada en iyi uygulama nedir?Korumalı öznitelikleri FactoryGirl ile ayarlama

Factory.define :user do |f| 
    f.name "Tim"   # attr_accessible -- this works 
    f.confirmed true  # attr_protected -- doesn't work 
end 

benim fabrika kullandıktan sonra @user.confirmed = true yapabilirsiniz, ama bu testlerin bir sürü genelinde tekrarlama bir çok şey.

cevap

10

çalışır:

Factory.define :user do |f| 
    f.name "Tim" 
    f.after_create do |user| 
    user.confirmed = true 
    user.save 
    end 
end 
+2

Büyük bulmak. Fabrika kızının daha yeni sürümleri sözdizimini “after (: create)” olarak değiştirdi. [Başlangıç ​​kılavuzu] 'na bakın (https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md) –

3

FactoryGirl bunu kütle atamasından koruduğundan, kullanıcıyı oluştururken hashta aktarmanız gerekir. Bir after_create kanca kullanarak

user ||= Factory(:user, :confirmed => true) 
+0

teşekkürler - sadece bunu denedim ve işe yaramadı – brittohalloran

+2

FactoryGirl 2.1.0 üzerinde benim için çalışıyor. – iwasrobbed

+0

2.3.2 kullanıyorum, bu olabilir ama bu olası görünmüyor – brittohalloran

0

başka bir yaklaşım Raylar böyle rollerde inşa kullanmaktır:

#user.rb 
attr_accessor :confirmed, :as => :factory_girl 

zaman kitle atama, bu rolü FactoryGirl yayın yapılması Bu desen mümkün.

Artıları:, hızlı, basit ve temiz (daha az geri çağrıları kodu)
Eksileri fabrikaları tutar: Eğer testler :(Con adrese

Bazı denenmemiş öneriler için model kodu değişiyor .: | _helper [spec testi] sadece kendi fabrikasında yukarıdaki sınıfını yeniden açılabilir

  • bir sınıfı yeniden açılabilir