2016-08-09 19 views
5

Rails uygulamasında, bazı Ruby kodlarına göre dinamik olarak ayarlanan bir değişkene sahip bir .js.erb dosyası var.RSpec otomatik testi sırasında Sprockets önbelleğini geçersiz kılma

var myTimer = <%= MyApp.config.timeout_time * 1000 %>; 

Uygulama iyi çalışıyor, ancak bazı otomatik testlerde sorun yaşıyorum. Sorun, bu JavaScript ile çalışan bir RSpec özellik testinde gerçekleşir. Benim spec dosyada farklı senaryoları test etmek için anında MyApp.config.timeout_time rubyeyi değiştiren bir dizi test vardır. Benim spec dosyasımda, ilk örnek geçer ve gerisi başarısız olur.

Sonunda bunun gerçekleştiğini anladım çünkü myTimer hiçbir zaman JavaScript tarafında güncellenmez. İlk test çalıştırıldığında, JavaScript, Ruby'de ayarlandığı haliyle mevcut değeri kullanarak derlenir. İkinci test için Ruby zamanlayıcısını değiştirdiğimde, RSpec hala JavaScript'te bir önceki değeri kullanıyor.

Sprockets/Rails'e JavaScript'in yeniden oluşturulması için bir dosyayı veya önbelleğin bir bölümünü geçersiz kılmalarını söylemenin bir yolu var mı? Genel olarak önbelleğe almayı kapatmak istemiyorum, sadece gerektiğinde uygulama testini uygulama.js'yi geçersiz kılmanın bir yoluna ihtiyacım var.

Dosya sistemindeki javascript dosyalarını değiştirdiğimi düşünmek için dosya sistemindeki JavaScript dosyalarından birine dokunabilirim, ancak bunu gerçekten yapmak istemiyorum.

cevap

1

Ne istediğini nasıl yapacağımı bilmiyorum. Ancak, myTimer değerini, belirli bir değer olması için gereken özellik özelliklerinde olmasını istediğiniz değere ayarlamayı düşünebilirsiniz.

Eğer Capybara kullandığınız varsayarsak, bir komut dosyası değiştirebilirsiniz nerede myTimer bir yere koymak için öncelikle JavaScript biraz yeniden düzenlemek gerekebilir

page.execute_script('// some Javascript') 

bir özellik spec Javascript çalıştırabilirsiniz.

+0

Teşekkürler, bu harika bir fikir. Bir şans vereceğim. – CodeSmith

+0

Hiç şansın var mı? –

+0

Henüz emin değilim. Diğer bazı sorunları desteklemek için yönlendirildim ve henüz bunu denemek için bir şansım olmadı. Daha fazlasını bildiğim zaman güncellenir. – CodeSmith

İlgili konular