2011-06-10 23 views
5

TestUnit ile Spork ve Capybara'yı kurmaya çalışıyorum ve bir test.rb yapılandırma sorununa çalıştırıyorum.Spork Capybara, config.cache_classes çakışma

konu Spork Spork her zaman sıfırlamak zorunda kalmadan testleri çalıştırırken modelindeki değişiklikler yansıtılması, böylece config.cache_classes, false olarak ayarlanmış olması gerekir olmasıdır.

Capybara, diğer yandan, config.cache_classes öğesinin true olarak ayarlanmasını gerektiriyor gibi görünüyor, aksi halde entegrasyon testleri yalnızca çalışmıyor gibi görünüyor.

Sadece bunun için olası bir çözüm/açıklama arıyorum. bu sadece TestUnit içinde var olan bir şey mi, yoksa bu bir hata mıdır ve bunu rapor etmeliyim? Herhangi bir yardım büyük takdir edilecektir!

cevap

3

this one ürününe benzer bir yaklaşım kullanmayı öneririm. ,

Spork.each_run do 
    ActiveSupport::Dependencies.clear 
    ActiveRecord::Base.instantiate_observers 
end if Spork.using_spork? 

Umarım bu cache_classes Capybara için de geçerli olmasını sağlayacaktır: Yapmak istediğiniz edeceğiniz en önemli şey true senin config.cache_classes ayarlanır, ancak her kaçarak modelleri ve bağımlılıkları yeniden SPORK zorlamak olduğunu ama aynı zamanda, modellerin ve gözlemcilerin test çalışmaları arasında yeniden yüklenmesine de izin verecektir.

+0

Bu sorunun çözümü için her yeri aradım ve gördüğüm tek şey "bunu deneyin" ve "beğenme" ve "umarım" ifadelerini içeren yorumlardır. Ne yazık ki, bu cevap sorunu çözmek için diğerlerine göre daha yakın değil. –

1

Spork ve salatalık ile benzer bir sorun yaşadım. Bulduğum çözüm, DRB ortamını spork olarak ayarlar. Bunu çözmenin en zarif yolu olduğunu düşünmüyorum, ama eğer capybara bazı env değişkeni ayarlarsa, bunu kullanabilirdiniz?

+0

Yaptığım şey bu. cache_classes = false, tam test paketini çalıştırırken diğer yerlerde büyük rahatsızlıklara neden olur, ancak eğer spork koşuyorsam, genellikle görev odaklı ve hata ayıklamalarını ekliyorum, vb. Yukarıdaki her_run eklemesiyle bile, cache_classes true değerine ayarlanmışsa , spork sadece benim için yeniden yüklemezdi. –