2011-09-19 22 views
5

Javascript kodu için ünite testleri yapan pek çok Jasmine birim testi var. DOM manipülasyonu yapmak için Jasmine-jquery eklentisini kullanıyorlar. onlar loadFixture JasmineAdapter ile Javascript JsTestDriver Jasmine & Jasmine-jquery

Ben JsTestDriver kullananların birim testleri, otomatik hale getirmek için çalıştı HTML

ait demirbaşlar yüklemek için, kullanmak Ancak tüm testler manipulation DOM-jquery geçmezken dahil? Bu konuda bir sorun mu var? JsTestDriver ile Jasmine-jquery'yi kullanmanın bir yolu var mı?

cevap

9

Kendime cevap veriyorum çünkü bu sorun için bir çözüm buldum. Sorun, Jasmine-Jquery'nin html fikstürünü yüklemek için ajax kullanmasıydı ve Jasmine testlerini çalıştıran HTML konteynerine göre html fikstürlerinin bir yerde bulunması varsayılarak göreceli bir yol kullanıyor. ancak JsTestDriver testleri kendi "alanı" içine yüklediğinden, Jasmine-Jquery'nin bu html fikstürleri aradığı konumu değiştirmemiz ve JsTestDriver'ın bunları yüklemesini sağlarız. aşağıdaki gibi

böylece çözümdür:

JsTestDriver statik html dosyaları yüklemek için yeteneği vardır.

Serve: yapılandırma dosyasında aşağıdakileri ekleyin - örneğin : Serve: - fikstürler * .html

şimdi aşağıdaki biçimde http olanlar erişebilirsiniz: localhost: 9876/test/fikstür/... Jasmine-jquery'nin bu yerden fikstürleri yüklemesini bilmesini sağladınız.

ve voila, testlerinizin tekrar çalışmasını sağlayabilirsiniz.

+0

benim kavanoz dosya benim klasör "yasemin" İçinde orada lib/yasemin çekirdekli/jasmine.js sahip kullanılmasını sağlıyoruz. Ben de scripts/test.js ve fikstür/text.html var. Hizmet verdim: - fikstürler/* html ama jasmines fixturePath'i ayarlarken hala 'fixtures'/fixtures 've diğer varyasyonlarla panik hataları alıyorum. Herhangi bir fikir? –

+0

Ah Monica'nın cevabını okudum ve ön test/test yaptırmam gerektiğini gördüm. Bu çözüldü. Sunucum localhost'ta bulunmadığından localhost örneği biraz atıyordu. –

+0

Bu JsTestDriver-1.3.4-a.jar için çalışmıyor gibi görünüyor ama Windows için JsTestDriver-1.3.4.b.jar için yerine getiriyor. – gotofritz

3

Sadece previous posting biraz açıklığa kavuşturmak için. senin jsTestDriver yapılandırma dosyasında varsa

:

hizmet:

spec/fixtures/*_fixture.html 

Ardından, temelde /test/ + hangi yolu hangisi

jasmine.getFixtures().fixturesPath = '/test/spec/fixtures'; 

ile test paketi geçersiz kılmak gerekir jsTestDriver yapılandırma dosyanızdaki sunum bölümünde bildirirsiniz.

0

Sadece bana yardımcı olduğu kadar başkalarına da yardımcı olacak bir açık kaynak araç seti yayınladım. Kutunun dışında çalışan bir omurga uygulaması sağlayan bir çok açık kaynak araçlarının bir bileşimidir.

Bu, requirejs metin eklentisini ve requirejs handlebars eklentisini kullanarak daha zarif bir çözüme sahiptir.

Çalıştırmak için tek komutlar sağlar: dev web sunucusu, jasmine tek tarayıcı test koşucusu, jasmine js-test-driver çoklu tarayıcı test koşucusu ve JavaScript ve CSS için birleştirme/minleştirme. Ayrıca, üretim hata ayıklaması için uygulamanızın ulaşmamış bir sürümünü çıkarır, gidon şablonlarınızı önceden derler ve uluslararasılaştırmayı destekler. Kurulum gerekli değil. Sadece işe yarıyor.

http://github.com/davidjnelson/agilejs