2016-03-24 9 views
1

Testlerim için model nesneleri oluşturmak için Factory Girl kullanıyorum. Bir geçersiz kılma verilse bile modelin niteliklerini manipüle etmeye çalışıyorum.Fabrika Kız: Bu alanın üzerine yazarken bile modellerin üzerindeki alanları yönetin

Örn: şöyle Benim testlerde

factory :user, :class => User do 
     domain_id 1 
     email { F.generate(:email) } 
     updated_at { <do some manipulation> } 
    end 

, ben kullanıyorum:

user = F.create(:user, :updated_at => Time.now.utc) 

Bu benim Fabrika tanımında var updated_at üzerinde manipülasyon atlayacak. Geçersiz kılma sağlandığında bile manipülasyonu zorlamanın bir yolu var mı?

cevap

0

F.create(:user, updated_at: overridden_value) çağrılırken geçersiz kılınmış değer geçerdi, arayanın geçirilen eğer Factorygirl callbacks:

factory :user, :class => User do 
    domain_id 1 
    email { F.generate(:email) } 
    updated_at { <do some manipulation> } 

    after(:create) do |user| 
    #user.updated_at <do some manipulation> 
    end 

    after(:build) do |user| 
    <do some manipulation> 
    end 

+0

teşekkür:

factory :user, :class => User do domain_id 1 email { F.generate(:email) } trait :manipulated_updated_at do # Manipulation code end end 

Sonra olarak derim! Bu çok yardımcı olur –

0

Bastırıldı değerler daha iyi olurdu yani deneyin.

Diğer yanıtlarda önerilenden farklı bir yaklaşım. Fabrika kızında fabrikada belirli amaçlarla kullanabileceğiniz traits vardır. aşağıdaki gibi updated_at için manipülasyon yapan bir özellik tanımlayabiliriz:

user = F.create(:user, :manipulated_updated_at, :updated_at => Time.now.utc) 
+0

Her iki harika cevap! Teşekkürler! –

İlgili konular