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.

  • 🔘 Çerçeve rolü: Jasmine herhangi bir şeyi test eder. JavaTarayıcı, DOM veya yardımcı kütüphaneler kullanmadan yazılmış komut dosyası.
  • ☑️ Ortam kurulumu: Modülü yükleyin, jasmine init komutunu çalıştırın, ardından spec/support/jasmine.json dosyasını inceleyin.
  • Özellik deseni: `describe` bir test paketini adlandırır, bir spesifikasyon tanımlar, `expect` ise sonucu doğrular.
  • 🧪 Eşleştiriciler: "ToBe", "toEqual", "toContain", "toThrow" ve "toHaveBeenCalled" ifadeleri çoğu iddiayı kapsar.
  • Modern koşucu: Bakımı yapılan jasmine paketi, bakımı yapılmayan jasmine-node modülünün yerini almaktadır.
  • 📊 Çerçeve seçimi: Jasmine iddiaları ve casus yazılımları gönderirken, Jest paralel çalıştırmaları ve anlık görüntüleri ekler.

Node.js uygulamalarının birim testini yapmak için Jasmine çerçevesi eğitim rehberi

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 destek klasöründeki Jasmine yapılandırma dosyası, spec dizinini ve spec_files'ı gösteriyor.

  1. 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.
  2. 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.

Add.js modülü, iki parametrenin toplamını döndüren AddNumber fonksiyonunu dışa aktarır.

var exports=module.exports={};
exports.AddNumber=function(a,b)
{
return a+b;
};

Code açıklama

  1. “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.
  2. 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.
  3. 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.

add-spec.js dosyası, bir describe paketi ve AddNumber'ın 11 döndürdüğünü doğrulayan bir it spesifikasyonu içerir.

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

  1. Bu dosyadaki 'AddNumber' fonksiyonunu test edebilmemiz için öncelikle Add.js dosyamızı eklememiz gerekiyor.
  2. Ş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.
  3. Bir sonraki bit, 'it' yöntemini kullanarak testimiz için bir açıklama vermektir.
  4. Ş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.
  5. 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ı

  1. Testi çalıştırmak için jasmine komutunu çalıştırmanız gerekir.
  2. 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.

Jasmine komutunun konsol çıktısı, yürütülen `add-spec` testini bildiriyor.

Ö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.

SSS

Jasmine, spec_dir'i önek olarak okur, ardından spec_files'da listelenen her glob ifadesini okur, böylece yalnızca eşleşen dosyalar çalıştırılır. Ünlem işaretiyle başlayan yollar hariç tutulur ve yardımcı fonksiyonlar, paylaşılan kurulumu kaydetmek için testlerden önce bir kez yüklenir.

Spesifikasyonu async olarak tanımlayın ve çağrıyı bekleyin, bir promise döndürün veya bir done geri çağırma işlevi kabul edin. asenkron kılavuz "Done" komutunun tam olarak bir kez çalıştırılması gerektiğini, aksi takdirde hataların yanlış spesifikasyona yansıyacağını belirtir.

Çalıştırıcıdan sonra bir yol veya glob belirtin, örneğin `npx jasmine spec/appSpec.js`. `--filter` bayrağı, açıklama adıyla eşleşen bir kalıbı kabul eder; bu da tek bir paket üzerinde çalışırken geri bildirimi hızlı tutar.

MKS yasemin-düğümü Paket bakım modunda, hala Jasmine 1.3'ü içeriyor ve Node.js 10 ve 12'yi güncel sürümler olarak listeliyor. Resmi jasmine paketi tracks, bunun yerine çerçeveyi ve desteklenen Node.js sürümlerini kullanır.

Bir spesifikasyonun başına x önekini (örneğin xit veya xdescribe) eklerseniz, Jasmine bunu beklemede olarak bildirir. Başına f önekini (örneğin fit veya fdescribe) eklerseniz, yalnızca odaklanılan spesifikasyonlar çalışır. Taahhüt etmeden önce her iki öneki de kaldırın.

Yapay zekâ asistanları, mevcut bir modülden saniyeler içinde tanımlayıcı bloklar, eşleştiriciler ve uç durumlar taslağı oluşturur ve aralıklı olarak başarısız olan paketleri işaretler. Ancak, yanlış davranış hakkında kesin bir iddia kusuru gizlediği için, oluşturulan her spesifikasyonun yine de gözden geçirilmesi gerekir.

GitHub Yardımcı Pilotu Siz yazarken test gövdelerini tamamlar ve aracı modu, yeniden düzenleme sonrasında bozulan testleri onaran bir çekme isteği açabilir. Farkı bir öneri olarak değerlendirin ve test paketini kendiniz çalıştırın.

Angular hâlâ Jasmine'in teknik özelliklerinin iskeletini oluşturuyor ve başınatractor Daha önce varsayılan çerçeve olarak Jasmine kullanılıyordu, ancak daha sonra arşivlendi. Ekipler artık tarayıcılar için Jasmine'i Karma ile birlikte kullanıyor veya tarayıcı akışlarını başka bir yere taşıyor. Cypress ve Oyun Yazarı.

Bu yazıyı şu şekilde özetleyin: