Jasmine Çerçeve Eğitimi: Örnekle Birim Testi
⚡ Akıllı Özet
Jasmine davranış odaklıdır. JavaTarayıcı veya DOM kullanmadan, describe blokları, spec'ler ve expect eşleştiricileri kullanarak Node.js birim testlerini çalıştıran bir betik test çerçevesi. Bu çerçeve, dışa aktarılan her fonksiyonun belgelendiği gibi davrandığını doğrular.
JasmineJS nedir?
Jasmine açık kaynaklı ve en popüler JavaHer türlü test için komut dosyası kütüphanesi test çerçevesi JavaKomut dosyası uygulaması. Jasmine, her satırın doğru olduğundan emin olmak için Davranış Odaklı Geliştirme (BDD) prosedürünü izler. JavaKomut dosyası ifadesi düzgün bir şekilde birim testinden geçirildi.
Jasmine Çerçevesi Ne İçin Kullanılır?
Test etme, herhangi bir uygulamanın temel unsurlarından biridir. Node.js birim testleri için kullanılabilen çerçeveye Jasmine denir. 2000'li yılların başlarında, test için bir çerçeve mevcuttu. JavaSenaryo JsUnit adı verilen uygulamalar. Later bu çerçeve yükseltildi ve artık Jasmine olarak biliniyor.
Jasmine otomasyona yardımcı oluyor Birim TestiBu, geliştirme sürecinde oldukça önemli bir uygulama haline geldi.ping ve modern web uygulamalarının kullanıma sunulması.
Bu Jasmine eğitiminde, Jasmine ile ortam kurulumunuzu nasıl yapacağınızı ve ilk Node.js uygulamanız için Jasmine testlerini nasıl çalıştıracağınızı öğreneceksiniz.
Node.js uygulamalarını test etmek için Jasmine
Yasemin bir Davranış Odaklı Geliştirme(BDD) için test çerçevesi JavaSenaryo. Bunu yapar değil tarayıcılara, DOM'a veya herhangi bir şeye güvenin JavaKomut dosyası çerçevesi. Bu nedenle web siteleri için uygundur. node.js projeler veya herhangi bir yerde JavaScript çalışabilir. Jasmine'i kullanmaya başlamak için öncelikle gerekli Jasmine modüllerini indirip yüklemeniz gerekmektedir.
Jasmine Test Ortamı Nasıl Kurulur
Bu Jasmine Node.js eğitiminin bir sonraki adımında, ortamınızı başlatmanız ve Jasmine yapılandırma dosyasını incelemeniz gerekecek. Aşağıdaki adımlar, Jasmine'i ortamınızda nasıl kuracağınızı göstermektedir.
) 1 Adım NPM Modüllerini Kurun
Yapmanız gerekenler NPM'yi yükleyin Jasmine-node modülü, bir Node uygulaması içinden Jasmine çerçevesini kullanmanızı sağlar. Jasmine-node modülünü yüklemek için aşağıdaki komutu çalıştırın.
npm install jasmine-node
Sürüm notu (2026): Yukarıdaki tarihi komut hala çalışıyor, ancak yasemin-düğümü Bu modül bakım modundadır ve Jasmine 1.3'ü içermektedir, bu nedenle yalnızca eski projeler için saklayın. Yeni Node.js çalışmaları, bakımı yapılan sürümü yükler. Jasmine CLI Bunu bir geliştirme bağımlılığı olarak ekler ve npx aracılığıyla çağırır:
npm install --save-dev jasmine npx jasmine init
Jasmine 6.x Bu, mevcut ana sürüm hattıdır ve Node.js 20, 22 ve 24'ü destekler; Node.js 24 ise 2026'da aktif LTS sürümü olacaktır.
) 2 Adım Jasmine Ortamını Başlatın
Projenin başlatılması – Bu işlemle Jasmine sizin için bir spec dizini ve yapılandırma JSON dosyası oluşturur. Spec dizini, tüm test dosyalarınızı depolamak için kullanılır. Bu sayede Jasmine, tüm testlerinizin nerede olduğunu bilecek ve buna göre bunları çalıştırabilecektir. JSON Bu dosya, Jasmine ile ilgili belirli yapılandırma bilgilerini saklamak için kullanılır.
Jasmine ortamını başlatmak için aşağıdaki komutu çalıştırın.
jasmine init
) 3 Adım Yapılandırma dosyanızı inceleyin.
Yapılandırma dosyası spec/support klasöründe jasmine.json olarak saklanacaktır. Bu dosya, Jasmine runner'ın dahil etmesini istediğiniz kaynak dosyaları ve spesifikasyon dosyalarını numaralandırır.
Aşağıdaki ekran görüntüsü, Jasmine için tipik bir jasmine.json dosyası örneğini göstermektedir.
- Spec dizininin burada belirtildiğini unutmayın. Daha önce de belirtildiği gibi jasmine çalıştırıldığında bu dizindeki tüm testleri arar.
- Dikkat edilmesi gereken bir sonraki şey spec_files parametresidir – Bu, oluşturulan test dosyaları ne olursa olsun, bunlara 'spec' anahtar sözcüğüyle eklenmesi gerektiğini belirtir.
Yapılandırma notu: Jasmine 6.x'te aynı dosya ayrıca şunları da kabul eder: yardımcılarıHer testten önce bir kez yüklenen ve bir env Rastgele ve stopSpecOnExpectationFailure gibi blok tutma seçenekleri. Varsayılan spec_files glob'u şöyledir: **/*[sS]pec.?(m)jsve farklı bir dosya da iletilebilir. –yapılandırma ya da JASMINE_CONFIG_PATH değişkeni.
Bu Jasmine çerçeve eğitiminde bir sonraki adımda, Node.js uygulamalarını test etmek için Jasmine'i nasıl kullanacağımızı öğreneceğiz.
Node.js uygulamalarını test etmek için Jasmine nasıl kullanılır?
Node.js uygulamalarında Jasmine birim testini kullanmak için bir dizi adımın izlenmesi gerekir.
Aşağıdaki örneğimizde, test edilmesi gereken 2 sayıyı toplayan bir modül tanımlayacağız. Ardından, test kodunu içeren ayrı bir kod dosyası tanımlayacağız ve buna göre Toplama fonksiyonunu test etmek için Jasmine'i kullanacağız.
) 1 Adım Test edilmesi gereken kodu tanımlayın. 2 sayıyı toplayıp sonucu döndürecek bir fonksiyon tanımlayacağız. Bu kod “Add.js” adlı bir dosyaya yazılacak.
Aşağıdaki ekran görüntüsü tamamlanmış Add.js modülünü göstermektedir ve aynı kod, altında metin olarak tekrarlanmıştır.
var exports=module.exports={}; exports.AddNumber=function(a,b) { return a+b; };
Code açıklama
- “Exports” anahtar sözcüğü, bu dosyada tanımlanan işlevselliğe gerçekte diğer dosyalar tarafından erişilebilmesini sağlamak için kullanılır.
- Daha sonra 'AddNumber' adında bir fonksiyon tanımlıyoruz. Bu fonksiyon a ve b olmak üzere 2 parametre alacak şekilde tanımlanmıştır. İşlevi diğer uygulama modülleri tarafından erişilebilen genel bir işlev haline getirmek için işlev "dışa aktarma" modülüne eklenir.
- Son olarak fonksiyonumuzun parametrelerin katma değerini döndürmesini sağlıyoruz.
) 2 Adım Ardından, Add.js dosyasındaki "Add" fonksiyonunu test etmek için kullanılacak Jasmine test kodumuzu tanımlamamız gerekiyor. Aşağıdaki kod, adlı bir dosyaya yerleştirilmelidir. add-spec.js.
notTest dosyasına 'spec' kelimesi eklenmeli ki Jasmine tarafından algılanabilsin.
Aşağıdaki ekran görüntüsü, aynı teknik özellik dosyasının bir düzenleyici programda açık halini göstermektedir.
var app=require("../Add.js"); describe("Addition",function(){ it("The function should add 2 numbers",function() { var value=app.AddNumber(5,6); expect(value).toBe(11); }); });
Code açıklama
- Bu dosyadaki 'AddNumber' fonksiyonunu test edebilmemiz için öncelikle Add.js dosyamızı eklememiz gerekiyor.
- Şimdi test modülümüzü oluşturuyoruz. Test modülünün ilk kısmı, temel olarak testimize isim veren bir yöntemi anlatmaktır. Bu durumda testimizin adı “Toplama”dır.
- Bir sonraki bit, 'it' yöntemini kullanarak testimiz için bir açıklama vermektir.
- Şimdi AddNumber yöntemimizi çağırıyoruz ve 5 ve 6 olmak üzere 2 parametre gönderiyoruz. Bu parametreler Add.js dosyasındaki AddNumber yöntemine iletilecek. Dönüş değeri daha sonra value adlı bir değişkene kaydedilecek.
- Son adım, karşılaştırmayı veya asıl testimizi yapmaktır. AddNumber fonksiyonunun döndürdüğü değerin 11 olmasını beklediğimiz için, bunu expect(value).toBe(beklenen değer) yöntemiyle tanımlıyoruz.
Çıktı
- Testi çalıştırmak için jasmine komutunu çalıştırmanız gerekir.
- Aşağıdaki ekran görüntüsü, Jasmine komutu çalıştırıldıktan sonra, add-spec.js adlı bir testin varlığını tespit edip buna göre testi çalıştıracağını göstermektedir. Testte herhangi bir hata varsa, bu durum buna göre gösterilecektir.
Örnekteki "Add" ifadesi tek bir eşleştirici kullanıyor, ancak Jasmine tam bir eşleştirici seti sunuyor. Aşağıdaki tabloda, yazacağınız hemen her doğrulama ifadesini kapsayan eşleştiriciler listelenmiştir.
En Çok Kullanacağınız Jasmine Kibritleri
Eşleştirici, expect() ifadesinden sonra gelen karşılaştırmadır. Herhangi bir eşleştiricinin önüne .not ekleyerek onu tersine çevirebilirsiniz, örneğin expect(value).not.toBe(11).
| Eşleştirici | Neleri kontrol eder? | Tipik kullanım |
| Olmak | Kesin özdeşlik, === ile aynı karşılaştırma. | expect(value).toBe(11) |
| eşit | Nesnelerin ve dizilerin derin eşitliği | expect(user).toEqual({id: 1}) |
| İçermek | Bir dizi veya dize içindeki üyelik | expect(files).toContain('add-spec.js') |
| Tanımlanacak | Değer tanımsız değil. | expect(app.AddNumber).toBeDefined() |
| atmak | Sarmalanmış fonksiyon bir hata oluşturuyor. | expect(callAdd).toThrow() |
| çağrılmış olmak | En az bir kez casusluktan bahsedildi. | expect(logger.write).toHaveBeenCalled() |
Hataların okunabilirliğini sağlamak için iki alışkanlık önemlidir. `toBe` yöntemini yalnızca temel veri tipleri ve özdeş referanslar için kullanın, çünkü aynı içeriğe sahip iki nesne asla `===` ile eşleştirilemez. `toEqual` yöntemini yapılar için kullanın ve argümanların çağrının kendisi kadar önemli olduğu durumlarda `toHaveBeenCalledWith` ekleyin.
Jasmine'de Kurulum, Söküm ve Casuslar
Gerçek süitler, yavaş çalışanlar için paylaşımlı durum ve çift bellek gerektirir. Jasmine, ek bir paket gerektirmeden bunların her ikisini de sağlar.
- beforeEach ve afterEach Bir `describe` bloğu içindeki her bir özellikten önce ve sonra çalıştırın; bu, fikstürleri yeniden oluşturmak için doğal yerdir.
- her şeyden önce ve her şeyden sonra Bu fişler tüm blok için yalnızca bir kez çalıştırılır, bu nedenle bağlantı açma gibi pahalı işler için saklayın.
- spyOn(object, 'method') gerçek bir yöntemin yerini bir yöntemle değiştirir. tracking double; yanıtını kontrol etmek için .and.returnValue() ekleyin.
- jasmine.createSpy('name') Bağlanacak bir nesnesi olmayan bir geri çağırma işlevi için bağımsız bir çift değer oluşturur.
- Asenkron özellikler Asenkron olarak tanımlanıp beklenebilir, bir promise döndürebilir veya yalnızca bir kez çağrılması gereken bir done geri çağırma işlevi kabul edebilir.
Casuslar, testler arasında sıfırlanır, böylece bir test paketi asla bir sonraki teste sahte bir yöntem sızdırmaz. Bu izolasyon, başarısız bir testin bir dizi hata yerine tek bir hataya işaret etmesini sağlar; bu da aynı şekilde açıklanan disiplindir. birim testi temeller.
Jasmine vs Mocha vs Jest
Jasmine, hakim olan üç çerçeveden biridir. JavaSenaryo testleri ve seçim genellikle ne kadar kablolama işine sahip olmak istediğinize bağlıdır.
| Görünüş | Yasemin | koyun derisi | var |
| İddialar | Dahili | Ek olarak, genellikle Çay | Dahili |
| Casuslar ve alaylar | Dahili | Ek olarak, genellikle Sinon | Dahili |
| infaz | Seri | Seri | Süreçler arası paralellik |
| Anlık | Yok hayır | Yok hayır | Evet |
| Ortak ev | Angular, sade Node.js | Esnek Node.js yığınları | React ve modern paketleyiciler |
Pick koyun derisi Kendi doğrulama ve sahte nesne yığınınızı oluşturmak istediğinizde, var Paralel çalıştırmalar, kapsama alanı ve anlık görüntüler yapılandırma kontrolünden daha önemli olduğunda, Jasmine hala eksiksiz bir şekilde sunulan en hafif seçenektir ve bu nedenle yaygın olarak kullanılmaktadır. otomasyon testi süitler.




