Sayfa yüklendikten 5 saniye sonra başlayan 1 saniyelik jQuery .animate
eylemim var. Yasemin birimi test kodumda bir Sinon zamanlayıcı ayarladıktan sonra animasyon sonrası özelliklerinin olması gerektiği gibi olup olmadığını görmek için 7 saniye sonra test ediyorum.Bir Jasmine birim testinde Sinon kullanarak jQuery animasyonunu nasıl taklit edebilirim?
Doğru çalışmıyor, bu yüzden neler olup bittiğini daha iyi görebilmek için Jasmine HTML test sayfamın bir animasyon örneğini yerleştirdim. Firefox ve Chrome, sayfa yüklenirken ise
- , animasyon fonksiyon birim test hemen başarısız olur denir, sonra (aynı zamanda hemen) animasyon gözle görülür oluşur.
IE'de Opera ve Safari'de, sayfa yüklenir, animasyon işlevi çağrılır, birim testi hemen başarısız olur ve animasyon asla görünür olmaz. Ben umut Ne
(tüm tarayıcılarda) Aşağıdaki oldu:
- sayfa yüklendiğinde, animasyon işlevi denir, animasyon anında tamamlar ve birim test hemen başarılı olur.
Sinon's documentation baktığımızda, sahte zamanlayıcılar aşağıdaki süreçleri kapsayacak var: setTimeout
, clearTimeout
, setInterval
, clearInterval
, Date
nasıl jQuery'nin animasyon çalışmalarını bilmiyorum ama bunun için CSS kullanarak hayal geçiş ve CSS geçişleri Sinon'un useFakeTimers
kapsamında yer almıyor, bu yüzden problem olduğunu düşünüyorum. Ancak, sorun hakkında haklıysam hala bir çözüme ihtiyacım var.
Belki Sinon'dan başka bir şey denemeliyim? Jasmine'in waits()
bu testte mükemmel bir şekilde çalışıyor, ama kendim gibi sabırsız insanlar için inanılmaz derecede pratik değildir.
Başka önerileriniz var mı? Lütfen JS birim testinde yeniyim, bu yüzden belirsiz cevaplar bana yardım etmekten daha fazla kafa karıştırır. o)
Bu birkaç gün geçti ve kimse cevap gelmiştir. Bunu yapmak için şu anda ne yapıyorum, Jasmine'in waits() işlevi kullanıyor. Testler anlık olmamakla birlikte gerçek zamanlı olarak tamamlanmasına rağmen iyi çalıştı. Shucks. Lütfen benim için sahip olabileceğiniz başka fikirler yayınlayın. Teşekkürler. – gcdev
hey! Bu soruna yeni bir çözüm buldunuz mu? $ .fx.off cevap mükemmel çalışıyor, ama hala olması gereken yol değil ... –
Ben yapmadım. Waits() kullanıyorum. Bu soruyu bütünüyle unutmuştum. Ama Derek'in çözümünün Alex'inkinden daha basit olduğunu görmek ve lehine birkaç oyu var (bu yüzden muhtemelen başkaları için işe yarıyor), bunu deneyeceğim ve eğer benim için işe yararsa cevap olarak işaretleyeceğim. – gcdev