İçindekiler
Bugün geliştirici olmak için iyi bir zaman JavaScriptİçinde barındırdığı teknolojilerin oldukça olgunlaşması, web tarayıcılarının daha standart hale gelmesi ve her geçen gün oynanacak ve denenecek daha fazla yeni şeyin ortaya çıkması nedeniyle heyecan verici olduğu söylenebilir.JavaScript yerleşik bir dildir ve web bugün tek sayfalı uygulamaların ortaya çıkışını, MVC çerçevelerinin çoğalmasını gördüğümüz ana platformdur. AngularJS veya Backbone.js, sunucu tarafı JavaScript kullanarak Node.js ve hatta yalnızca kullanılarak oluşturulan mobil uygulamalar HTML, CSS Y JavaScript gibi teknolojilerle TelefonGap.
JavaScript, mütevazi başlangıcından beri, verileri işlemek ve formlarda doğrulamak için bir dil olarak hizmet etmekten sorumlu olmuştur. HTML ve şu anda web'de görebildiğimiz güçlü uygulamaları oluşturmak için kullanılıyor. Bunu görünce denilebilir ki JavaScript Diğer dillerdeymişiz gibi aynı kaliteye sahip olmamızı sağlamak için ortaya çıkan araçların yanı sıra uzun bir yol kat etti.
Bu araçlardan biri Yasemindavranış odaklı bir geliştirme çerçevesinden başka bir şey olmayan ve programlama dili için otomatik birim testleri oluşturmamıza izin veren . JavaScript. Bu araca tam olarak girmeden önce, nasıl çalıştığını anlamak için temel kavramların yanı sıra gelişimine yol açan arka planı görelim. JavaScript.
Bugün kimsenin gücünden şüphe yok. JavaScriptAncak, istemci tarafında çalışırken bazı zorluklar vardır ve bunun bariz nedenlerinden biri, yürütme ortamını kontrol edemememizdir. Sunucuda belirli bir sürümünü çalıştırabildiğimiz için bu sorunu yaşamıyoruz. Node.js ancak web tarayıcısı durumunda, kullanıcıya belirli bir sürümünü kullanmasını söyleyemeyiz. Krom veya Firefox.
Dil JavaScript spesifikasyonlar altında tanımlanmıştır ECMAScript böylece her tarayıcı, onu çalıştırmak için ortamın kendi uygulamasına sahip olabilir, bu da aralarında küçük farklılıklar veya hatalar olmasına neden olur. Her bir nesne JavaScript değişkendir, bu yüzden bir modülün diğerlerinin üzerine yazmasını önlemek için herhangi bir kontrolümüz yoktur, bunu göstermek için, global fonksiyonun üzerine yazmanın ne kadar kolay olduğunu görebileceğimiz küçük bir kod bölümüne bakalım. konsol.log:
konsol.log ('test'); konsol.log = 'ara'; konsol.log ('test');Fonksiyonun üzerine yazdığımız için hatayı açıkça görebildiğimiz konsoldaki cevaba bakalım:
Dilin bu şekilde olması, geliştiricilerin ona eksik işlevler eklemesine izin verdiği için tasarımında verilmiş bir karardı, ancak bu çok yönlülük göz önüne alındığında hata yapmak nispeten daha kolay, hatta dilin daha yeni bir versiyonu bile dilin daha yeni bir versiyonunu tanıttı. işlev nesne.mühür bu da bunu engelledi, ancak desteği yalnızca birkaç tarayıcıya genişletildi.
Sunduğumuz başka bir sorun JavaScript türlerin işlenmesidir, diğer dillerde '1' + 1 gibi bir ifade muhtemelen bir hataya neden olacaktır, ancak JavaScript bu, 11 ile sonuçlanır. Bu, bulunması zor birkaç soruna yol açabilir, örneğin aşağıdakilere sahip olduğumuzu varsayalım:
var a = 1, b = '5', c = 4, d = 2; var sonuç = a + b + c * d; konsol.log (sonuç);Kodumuzu tarayıcıda çalıştırdığımızda gelen yanıtı konsol üzerinden görelim:
Gördüğümüz gibi, sonuç bir diziydi, bu nedenle özel bir işlevde veya rutinde bir sayı bekliyorsak bu bir soruna neden olabilir ve bu hatayı bulmak değerli geliştirme zamanımızın birkaç saatini boşa harcamak anlamına gelebilir.
Az önce bahsettiğimiz noktaların kullanılmaması için bir sebep olmadığını belirtmekte fayda var. JavaScriptSadece nerede bazı zayıflıkları olduğunu görmektir, ancak bu onun kötü bir dil olduğu anlamına gelmez, hatta uygulama geliştirme açısından bize sunduğu olanakların sonsuz olduğundan emin olabiliriz ve daha da iyisi, hala araçlarımız var. biz onlar aynı en iyi uygulamaları ile yardımcı olacaktır.
Bahsettiğimiz gibi, Yasemin Geliştirmelerimiz içinde birim testlerimizde bize yardımcı olan ve daha sonra açıklayacağımız davranış odaklı geliştirme felsefesini kullanan küçük bir çerçevedir, ancak devam etmeden önce önemli bir kavram görelim ve bunlar birim testler.
Birim testleriNS birim testleri Bu yolun başında geliştiricinin davranış odaklı yerine test odaklı geliştirmeye odaklanan geleneksel bir felsefe ile bırakıldığı uygulamamızın kodundaki birimlerin işlevlerini test eden kod parçalarıdır.
Bu yüzden yaratıcıları Yasemin geliştiricinin, test sürecinde nereden başlayacağına dair net bir resmi olmadan, neyi test edeceğini ve bir test modülünün ne kadar büyük olabileceğini ve hatta bu testlerden birine ne diyeceğini bilemediği bu geleneksel test yöntemini yeniden yapılandırırlar. . Örneğin, felsefesini kullanırsak, Yasemin Testleri gerçekleştirmek için, aşağıdaki kabul kriterlerine sahip bir müzik çalarımız olduğunu varsayalım: Müzikçalar verildiğinde, bir şarkı duraklatıldığında, oynatıcı şarkının duraklatıldığını belirtmelidir.
Böylece kriteri alabilir ve aşağıdaki gibi bölebiliriz:
- Verilen (Bir başlangıç bağlamı)
- Ne zaman (Olay meydana gelir)
- Sonra (Bir işlem yapılır)
tarif ("Oyuncu", function () {describe ("Şarkı duraklatıldığında", function () {it ("Şarkının duraklatıldığını belirtmelidir", function () {});});});Gördüğümüz gibi kriterlerimiz transfer edildi. Yasemin her kriterin bir birim testine çevrildiğini söyleyebiliriz.
Zaten nasıl olduğuna bir göz atabiliriz Yasemin kriterleri ele alır ve onun için birim testleri oluşturarak sözdizimine çevirir, ancak oraya ulaşmak için önce çerçeveyi nasıl elde edeceğimize bakalım. Bunu yapmak için proje sayfasına gidip indiriyoruz:
BÜYÜT
Açarken klasöre gitmeliyiz uzak, orada tüm dağılımları bulacağız Yasemin bugüne kadar, nerede kullanmaya başlayacağımız, istediğimiz dağıtımı, tercihen en yenisini seçmeli ve projemizin klasöründe açmalı, klasöre girmeli ve dosyayı çalıştırmalıyız. SpecRunner.html:Yasemin Varsayılan olarak bazı birim testlerinin bazı örneklerini içerir, burada dosya SpecRunner.html Kaynak dosyaları ve test edilecek dosyaları içeren Jasmine kodunu bağlamaktan sorumludur, içeriğini görelim:
Jasmine Spec Runner v2.2.0Gördüğümüz gibi, oldukça basit ve testlerimiz için bir temel yapı tanımlamamıza izin vererek, bu birim testleri dünyasında nereden başlayacağımız konusunda bize yardım ediyor. Dağıtımımızın koduna bir göz atmanın iyi bir fikir olduğunu söylemeye gerek yok. Yasemin nasıl çalıştığına kendimizi alıştırmak için.
Şunu belirtmek önemlidir Yasemin Yalnızca saf JavaScript ile yazılmış kodlarla sınırlı değil, aynı zamanda Backbone.js veya AngularJS, çok yönlülüğü bile çok daha ileri gidiyor ve kullandığımız durumda sunucu tarafı testleri yapmamızı sağlıyor. Düğüm.js.
ÖneriYasemin Birim testleri konusunda bize çok yardımcı olan bir çerçevedir, ancak içinde kullanılan kavramlar o kadar basit değildir, belirli gelişmiş uygulamalarla desteklenir. JavaScript işlevi kullanarak HTML oluşturmak gibi oluşturDom () öğeleri eklemek, bu özelliklerden bazılarından bahsetmek için, bu nedenle belgelerine göz atmanızı öneririz. JavaScript gelecekteki dersler için çok daha hazırlıklı olmak.
Bununla ilk adımlarımızı atabileceğimiz bu öğreticiyi bitirdik. Yasemin, test etmek için araçlar oluşturma motivasyonunda biraz yürümek JavaScript ve davranış odaklı geliştirmenin daha iyi testler oluşturmamıza nasıl yardımcı olduğunu ve ayrıca nasıl Yasemin test etmek için oldukça esnek bir çerçevedir ve aynı örneği kullanarak her türlü kodu test etmemize izin verir. JavaScript uygulamalarımızda.