Jest Pluginleri ve Kullanımları

Jest Pluginleri ve Kullanımları

Jest pluginleri, testlerinizi daha verimli hale getiren özellikler sunar Bu makalede Jest pluginleri hakkında bilmeniz gereken her şeyi öğrenebilir ve nasıl kullanacağınızı öğrenebilirsiniz Jest testlerinizi daha kolay, daha hızlı ve daha etkili hale getirin

Jest Pluginleri ve Kullanımları

Jest, JavaScript kodlarınızın doğruluğunu kontrol etmek, hataları bulmak ve performansını artırmak için kullanılan bir test kütüphanesi. Jest, testlerinizi daha kolay ve hızlı bir şekilde yazmanıza olanak sağlayabilecek birçok farklı plugin sunar. Bu makalede, Jest test kütüphanesi için kullanılan çeşitli pluginler ve kullanımları hakkında bilgi vereceğiz.

Jest Snapshot Plugini, testlerin durumlarını ve sonuçlarını görüntüleyebilmenizi sağlar. Bu plugin sayesinde testlerinizi daha iyi anlayabilecek ve test sonuçlarınızın istediğiniz gibi göründüğünden emin olabileceksiniz. Jest Coverage plugini ise kod kapsamı raporlama işlemlerinin nasıl yapılacağı hakkında bilgi verir. Bu plugin ile kodunuzun ne kadarını test ettiğinizi ölçebilir ve potansiyel hataların yerini daha kolay belirleyebilirsiniz.

Jest Extended Plugini, Jest test kütüphanesinin yeteneklerini artıran bir plugin. Özellikle custom Matcherlar kullanarak Jest Extended plugini ile gerçekleştirebileceğiniz testler, Jest'in temel özelliklerinden daha üst düzey bir test ortamı oluşturmanızı sağlar. Jest Global Setup Plugini, testlerinizin öncesinde ve sonrasında belirli işlemler gerçekleştirmenize olanak tanıyan bir plugindir. Bu plugin sayesinde gereksinimlerinizi çok daha kolay bir şekilde yerine getirebilirsiniz.

Bu makalede Jest test kütüphanesi için kullanılan pluginler ve kullanımları hakkında bilgi paylaştık. Bu pluginler sayesinde Jest kütüphanesinin yeteneklerini artırabilir, testlerinizi daha kolay bir şekilde yazabilir ve daha iyi sonuçlar alabilirsiniz.


Jest Snapshot Plugini

Jest Snapshot Plugini, Jest testlerinde kullanılan popüler bir plugin'dir. Jest Snapshot, testlerdeki çıktıları kaydederek, sonraki çalışmalarda aynı çıktının olup olmadığını kontrol eder. Bu şekilde, bir testte beklenen sonucun, gerçek sonuçla aynı olup olmadığını kolayca tespit edebilirsiniz.

Jest Snapshot Plugini, testlerdeki işlemleri otomatikleştirerek zamandan ve emekten tasarruf etmenize yardımcı olur. Snapshot'lar, testlerinizi daha hızlı ve verimli hale getirir. Ayrıca, test sonuçlarına güvenilirliği de arttırdığı için, bileşenlerin düzenli olarak test edilmesini sağlar.

Jest Snapshot Plugini, testler sırasında önceki çalışmalarınızdan bir çıktı görürse, beklenen çıktı ile karşılaştırır ve testin gerçekleşip gerçekleşmediğini size bildirir. Böylelikle, testlerin sağlıklı ve doğru çalışması garanti altına alınmış olur.


Jest Coverage Plugini

Jest Coverage plugini, Jest test kütüphanesi için oldukça yararlı bir plugin. Bu plugin sayesinde, kod kapsamı raporlama işlemleri oldukça kolay hale getirilebiliyor. Kod kapsamı, yazılan kodun hangi bölümlerinin test edildiğini belirleyen önemli bir faktördür. Jest Coverage plugini ile kodun ne kadarının test edildiği raporlanabiliyor. Bu özellik sayesinde, hangi kod bloklarının test edilmediği görülebiliyor ve eksikler giderilebiliyor.

Jest Coverage pluginini kullanabilmek için, önce Jest kütüphanesi kurulmalı, ardından Jest Coverage plugini yüklenmeli. Daha sonra, Jest komutunun coverage seçeneği ile testler koşulabiliyor ve kapsama raporlamaları alınabiliyor. Jest Coverage plugini, kod bloklarının satır bazında ne kadarının test edildiğini raporlama özelliği sunuyor. Bu özellik, test yazımı sırasında hangi kod bloklarının test edilmediğini veya testlerin başarısız olduğunu görmeye olanak sağlıyor.

Command Description
--coverage Kod kapsamı raporlamalarını etkinleştirir.

Jest Coverage plugini, ayrıca kapsama raporlama limitlerinin belirlenebilmesine de olanak sağlıyor. Bu limitler, bir kod bloğunun ne kadarının test edilmesine karar vermek için kullanılıyor. Aşağıdaki komutla belirli bir limit belirtilebiliyor:

"jest": {  "coverageThreshold": {    "global": {      "branches": 80,      "functions": 80,      "lines": 80,      "statements": -10    }  }}

Jest Coverage plugini ayrıca branch kapsamı raporlamaları da sunuyor. Böylece, kodun belirli bir dalının ne kadarının test edildiğini görülebiliyor. Branch kapsamı, programda belirli şartlar altında farklı yolların seçilebilme özelliğini ifade eder. Bu özellik sayesinde bu yolların ne kadarının test edilmediği görülebiliyor.

  • Belirli bir branch kapsamı limiti belirlemek için aşağıdaki komut kullanılabilir:
"jest": {  "coverageThreshold": {    "global": {      "branches": 80    }  }}

Jest Coverage Konfigürasyonu

Jest Coverage plugini, kod kapsamı raporlama işlemlerinin yapılabilmesini sağlar. Ancak bu işlem için pluginin konfigürasyonu yapılması gerekmektedir. Konfigürasyon işlemleri, jest.config.js dosyası üzerinden gerçekleştirilmektedir. Dosyanın içerisine "coveragePathIgnorePatterns" özelliği eklenerek, kapsama raporlama işlemi sırasında göz ardı edilecek dosyaların belirlenmesi sağlanabilmektedir. Ayrıca, "coverageThreshold" özelliği ile kapsama raporlama limitleri de belirlenebilmektedir.

Bu konfigürasyon işlemleri, jest.config.js dosyasında şu şekilde yapılabilir:

Kod Açıklama
module.exports = {  coveragePathIgnorePatterns: [    "node_modules/",    "dist/"  ],  coverageThreshold: {    global: {      statements: 80,      branches: 80,      functions: 80,      lines: 80    }  }}
Jest Coverage plugininin konfigürasyon işlemleri

Bu kodların açıklamaları şu şekildedir:

  • coveragePathIgnorePatterns: Bu özellik sayesinde, belirtilen dosyalar kapsama raporlama işlemi sırasında göz ardı edilir.
  • coverageThreshold: Bu özellik ise kapsama raporlama limitlerinin belirlenmesini sağlar. "global" anahtar kelimesiyle, tüm dosyalar için ortak bir limit belirlenebilir.
  • statements: Kodun yüzde kaçının kapsama raporlamasının yapılacağı belirlenir.
  • branches: Kodun branch (if-else, switch-case vb.) yapılarının yüzde kaçının kapsama raporlamasının yapılacağı belirlenir.
  • functions: Kodun fonksiyonlarının yüzde kaçının kapsama raporlamasının yapılacağı belirlenir.
  • lines: Kodun satırlarının yüzde kaçının kapsama raporlamasının yapılacağı belirlenir.

Kapsama Raporlama Limitleri

Jest Coverage plugini ile yapılan kapsama raporlama işlemleri için bazı limitler belirlenebilir. Bu limitler sayesinde kapsama raporlama işlemleri daha sağlıklı bir şekilde gerçekleştirilebilir.

  • statements: Kodun kaç satırının test edildiği bilgisini verir.
  • branches: Kodun kaç farklı branch'a ayrıldığı bilgisini verir.
  • functions: Kodun kaç fonksiyon içerdiği bilgisini verir.
  • lines: Kodun kaç satırının test edildiği bilgisini verir.

Jest Coverage plugini ile bu limitler ayrı ayrı ya da birlikte belirlenebilir. Ayrıca limitlerin yanı sıra minimum kapsama oranları da belirlenebilir. Bu oranlar, kodun ne kadarının test edilmesi gerektiğini belirler.

Limit Açıklama
statements 80%
branches 70%
functions 90%
lines 95%

Belirlenen minimum kapsama oranlarına ulaşılamaması durumunda, Jest Coverage plugini hata mesajı verir ve test sürecini başarısız olarak sonlandırır. Bu nedenle, kapsama raporlama limitlerinin doğru belirlenmesi ve düzenli olarak kontrol edilmesi önemlidir.


Jest Coverage Plugini ile Branch Coverage

Jest Coverage plugini sadece statement coverage değil, aynı zamanda branch coverage ölçümlemesi de yapabilir. Branch coverage, kodda her bir branch (dallanma) durumunun ne kadarının test edildiğini gösterir. Bu tür ölçümler kodun kapsamının daha net bir şekilde belirlenmesine yardımcı olur ve kodun kalitesini artırır.

Branch coverage ölçümlemesi yapmak için Jest Coverage pluginin çıktılarını incelemek yeterli değildir. Bunun yerine, uygulamadaki her bir branch için bir test yazmak gerekir. Branch coverage ölçümlemesi oluşturulurken, farklı koşulların test edilmesi gereken bazı özel durumlar mevcuttur.

Örneğin, kodda bir if bloğu varsa ve if bloğunun içindeki her koşul için ayrı ayrı testler yazılması gerekmektedir. Benzer bir şekilde, bir döngü durumunda her koşul ayrı ayrı test edilmelidir. Bu şekilde, tüm branch kapsamı ölçümlemeleri tamamlanmış olur ve kodun kalitesi artırılmış olur.

Örnek Jest Tests Dosyası
Test No Açıklama
1 if statement içindeki tüm koşulların test edilmesi.
2 koşullu ifadelerin uygulanması.
3 Döngülerin ayrı ayrı test edilmesi.

Yukarıdaki örnekte, Jest ile branch kapsamı ölçümlemeleri için birkaç test numarası örneklenmiştir. Bu örnekteki fikir, Jest Coverage pluginin koşullu ifadelere ve döngülere sahip kodu doğru bir şekilde test etmek için yeni Jest testleri eklemeye ihtiyacı olduğunu göstermektedir.


Jestistanbul Plugini

Jestistanbul plugini, kod kapsamı raporlama işlemlerini gerçekleştirmek için kullanılan bir jest pluginidir. Bu plugin sayesinde testlerimizin hangi kod parçalarını kapsadığını görebilir ve böylece testlerimizi daha iyi optimize edebiliriz. Jestistanbul plugini, özellikle büyük projelerde çok faydalı ve önemlidir.

Jestistanbul plugininin kullanımı oldukça kolaydır. Sadece jest yapılandırma dosyamıza şu kodu eklememiz yeterli olacaktır:

```javascript"coverageReporters": [ ["html", {"directory": "coverage"}], ["text-summary"]]```

Bu kod sayesinde Jestistanbul, kapsam raporlarımızı HTML ve metin formatında oluşturacaktır. `directory` parametresi ile kapsama raporlarımızın kaydedileceği klasörü belirtebiliriz.

Jestistanbul ayrıca test örtüsü raporu için birkaç isteğe bağlı parametre de sağlamaktadır. Bu parametreleri, Jestistanbul kapsam raporları için ayrılmış `istanbul.config.js` dosyasında belirtebiliriz.

Test kapsamı raporlama işlemlerinde Jestistanbul plugini kullanmak, testlerimizi daha efektif hale getirecektir. Bu sayede testlerimiz daha anlaşılır ve daha güçlü hale gelecek, projemizin kalitesini artıracaktır.


Jest Extended Plugini

Jest’in doğal jest ve expect API’si yeterince iyi ve testler hemen hemen her şeyi kontrol etmek için yeterince işlevlere sahiptir. Ancak, Jest Extended plugini test senaryolarına ek işlevler ekler. Bu plugin ile testler daha esnek ve etkili bir şekilde çalıştırılabilir.

Jest Extended plugini testçilerin kullanımına açılmış bir kütüphanedir ve jest ve expect API’sinin bir uzantısıdır. Bu plugin ile birçok özellik ve işlevler eklenerek test çerçevesi daha kolay bir hale getirilir. Jest Extended plugini sayesinde testlerin daha okunaklı ve daha anlamlı hale gelir.

  • Jest Extended plugini kullanarak test senaryolarında type kontrolü yapılabilir
  • Jest Extended plugini kullanarak sayfa yüklemeleri ve contentlerin kontrol edilmesi yapılabilir
  • Jest Extended plugini kullanarak mocking işlemleri daha kolay bir hale getirilir

Plugin kurulumu npm aracılığıyla yapılabilir. npm install -D jest-extended

Method Description
toBeWithinRange() Verilen sayının belirlenen sınırlar içerisinde olup olmadığını kontrol eder.
toHaveHTML() Belirtilen stringin sayfa içinde bulunup bulunmadığını kontrol eder.
toBeEmptyDOMElement() Belirtilen elementin boş bir element olup olmadığını kontrol eder.

Jest Extended plugini kapsamlı bir konudur. Yeni bir özellik veya faydalı bir işlev keşfetmek her zaman mümkündür. Jest Extended plugini ile ilgili daha ayrıntılı bilgi almak için resmi Jest Extended plugininin websitesini ziyaret edebilirsiniz.


Custom Matcherlar ile Jest Extended Plugini

Jest Extended plugini, Jest test kütüphanesine birçok özellik ve yetenek ekler. Bunlardan biri, custom matcherlar kullanarak Jest Extended plugini ile test yapmaktır. Custom matcherlar, beklenen sonuçları karşılaştırmak için kullanılan Jest fonksiyonlarına ek olarak, özel bir karşılaştırma mantığı sağlar.

Custom matcherlar, belirli bir değeri, özelleştirilmiş karşılaştırmalarla eşleştirmek için kullanılır ve testlerin okunabilirliğini artırır. Örneğin, Jasmine'deki toBeTruthy() fonksiyonu, geri dönen değerin true olup olmadığını kontrol eder. Bunun yerine, Jest Extended pluginindeki toBeTrue() fonksiyonu, değerin tam olarak true olup olmadığını kontrol eder.

Aşağıdaki örnek, Jest Extended pluginindeki bir custom matcher fonksiyonunun kullanımını göstermektedir:

expect("Hello World!").toEqualIgnoringCase("hello world!");

Bu fonksiyon, belirtilen stringin büyük-küçük harf farklarını dikkate almadan karşılaştırır.

Custom matcherlar kullanarak Jest Extended plugini ile testlerinizi daha anlaşılır ve yönetilebilir hale getirebilirsiniz. Ayrıca, Jest Extended plugininin sunduğu diğer özelliklerle birleştirildiğinde, Jest testlerinizi daha kapsamlı hale getirebilir ve kodunuzun kalitesini artırabilirsiniz.

Sonuç olarak, custom matcherlar, Jest Extended plugini ile birlikte kullanıldığında Jest test kütüphanesini daha güçlü hale getirir ve geliştirme sürecinde önemli bir araçtır. Bu sayede, testleriniz daha okunaklı ve anlaşılır olacaktır.


Jest Extended Plugini ile Mocking İşlemleri

Jest Extended plugini, Jest test kütüphanesi için birçok özellik sunar. Bu özelliklerden biri de mocking işlemlerini kolaylaştıran bir araçtır. Jest Extended plugini, mock işlemleri için birçok hazır fonksiyon sunarak testlerin daha kolay ve hızlı yazılmasını sağlar.

Mock işlemleri, gerçek bir veri kaynağına ihtiyaç duyulmadan testlerin geliştirilmesini ve hızlandırılmasını sağlar. Jest Extended plugini ile mock işlemleri yapmak oldukça kolaydır. Bu işlem için kullanabileceğiniz bazı Jest Extended fonksiyonları:

  • extendExpect - Bu fonksiyon, Jest’in expect() fonksiyonunu genişletir. Bu sayede mock verileri üzerinde Assert işlemleri gerçekleştirmek mümkündür.
  • extendMock - Bu fonksiyon, Jest’in mock() fonksiyonunu genişletir. Bu sayede mock verileri daha kolay oluşturulabilir.
  • spyOn - Bu fonksiyon, herhangi bir objenin methodlarını takip eder. Bu sayede methodun hangi parametrelerle çağrıldığını, kaç defa çağrıldığını kontrol edebilirsiniz.

Jest Extended ile mock işlemleri yaparken, isterseniz kendi custom mock fonksiyonlarınızı da tanımlayabilirsiniz. Bu sayede, testlerinize daha özgürce yaklaşabilir ve ihtiyaçlarınız doğrultusunda farklı çözümler üretebilirsiniz.

Bir örnek olarak, bir API’ye istek atarak ve API’nin dönüşünde oluşan objeyi test edelim. Normal koşullarda bu işlem oldukça zaman alıcı olacaktır. Ancak Jest Extended plugini sayesinde, mock objeleri kullanarak bu işlemi daha hızlı hale getirebiliriz. Bunu yapmak için öncelikle mock objeyi tanımlarız:

```javascriptconst apiResponseMock = { data: { id: 1, title: 'Mock Title', body: 'Mock Body' }}```

Daha sonra, mock objeyi kullanarak testimizi yazabiliriz:

```javascripttest('API test', () => { const output = apiRequest() // bu fonksiyon gerçek bir API’ye istek gönderir ve yanıtı döndürür.

expect(output).toEqual(apiResponseMock)})```

Bu sayede gerçek bir API’ye istek göndermeden ve yanıt beklemekten kurtuluruz. Jest Extended plugini sayesinde mock objeler ile testlerinizi daha hızlı bir şekilde geliştirebilirsiniz.


Jest Global Setup Plugini

Jest Global Setup plugini, Jest test kütüphanesi içinde yer alan bir plugin olup, test öncesi veya sonrası belirli işlemler gerçekleştirerek testlerin çalışma sürecini düzenler. Bu plugin, kod kalitesini artırmaya yardımcı olabilir ve test performansını optimize edebilir.

Jest Global Setup plugini ile yapılacak işlemler, jest.config.js dosyasında yapılabilir. Bu dosyada global olarak jest.setup.js ve jest.teardown.js dosyalarının çağrılması yeterlidir. Bu şekilde jest.setup.js dosyası, tüm testlerden önce bir kez çalıştırılacak olan kod bloklarını içerir. Bu bloklar aracılığıyla, veritabanı bağlantıları, API bağlantıları veya diğer önişlem işlemleri gerçekleştirilebilir. Benzer şekilde, jest.teardown.js dosyası ise tüm testlerin tamamlandığı durumlarda kullanılabilecek kod bloklarını içerir.

Aşağıdaki örnek jest.setup.js dosyası, testlerden önce gerçekleştirilecek bir işlem için oluşturulmuştur:

const mongoose = require('mongoose');mongoose.connect('mongodb://localhost/mydatabase', {useNewUrlParser: true});

Bu jest.setup.js dosyası, MongoDB veritabanına erişmek için mongoose paketini kullanır ve 'mydatabase' adlı veritabanına bağlanır. Bu bağlantı, tüm testlerden önce yapılacak olup, jest.teardown.js dosyasında da aşağıdaki kod bloğu ile kapatılmalıdır:

const mongoose = require('mongoose');mongoose.connection.close();

Bu şekilde, jest tekrar çalıştırıldığında yeni bir bağlantı açılacak ve tüm testler tamamlandıktan sonra bu bağlantı kapatılacaktır.

Sonuç olarak, Jest Global Setup plugini ile jest.config.js dosyasında tanımlanan işlemler sayesinde, test sürecinde belirli işlemler gerçekleştirilerek kod kalitesi artırılabilir ve test performansı optimize edilebilir.


Jest Global Teardown Plugini

Jest Global Teardown Plugini, Vue.js, React ve Angular gibi modern web uygulama çatılarından biri kullanılarak dört köşe test sürecini sağlar. Jest Global Teardown plugini ile bir test çalıştırması sonlandıktan sonra, tüm test çalıştırmalarında birçok değişken kullanılmış olabilir. Bu değişkenlerin bazıları son test çalıştırması bittikten sonra o test ile birlikte silinebilir.

Pluginin temel işlevi kodda yapılan değişikliklerin geri alınarak orijinal haline döndürülmesini sağlamaktır. Bu sayede sonraki test çalıştırmalarına bu değişkenlerin etkisinden tamamen kurtulunarak, verimliliği artırabilirsiniz.

Jest Global Teardown plugini, geri alma mantığına dayanarak çalışmaya başlar. Plugin yüklenirken bir parametre alır, bu parametre üzerinden tüm global değişkenlerin temizlenmesi sağlanır. Özellikle ağ bağlantılarına eklenen dinlemeciler gibi işlemler, test süreçleri sonlandıktan sonra kaldırılmalıdır.

Plugin, bir çalışma olarak da özelleştirilebilir. Bu özelleştirme sayesinde, tüm değişimlerin tam olarak geri alınması mümkündür. Özetle, Jest Global Teardown plugini test çalışmalarının daha temiz olmasını sağlayarak performansı artırır.


Jest Global Setup & Teardown Plugini Kullanımı

Jest test kütüphanesi için kullanılan Global Setup ve Teardown pluginleri ile karmaşık kod yapılarında daha düzenli ve hatasız testler yazılabilir. Jest Global Setup plugini, tüm testler çalıştırılmadan önce çalışacak fonksiyonlar tanımlama imkanı sağlar. Jest Global Teardown plugini ise tüm testler sonlandırıldıktan sonra çalışacak fonksiyonların tanımlanmasını sağlar ve yapılan tüm değişiklikleri geri alır.

Jest Global Setup ve Teardown pluginlerini kullanmak oldukça basittir. İlk olarak, bir "setup.js" ve "teardown.js" dosyası oluşturulmalıdır. Bu dosyaların içerisine yapılacak işlemler yerleştirilir. Daha sonra "jest.config.js" dosyasında "globalSetup" ve "globalTeardown" ayarları yapılır ve yukarıda oluşturulan dosyaların yolu belirtilir.

Adım Açıklama
Adım 1 Setup ve Teardown işlemleri için ayrı dosyalar oluşturulur.
Adım 2 Jest.config.js dosyasına globalSetup ve globalTeardown ayarları yapılır.
Adım 3 Testler çalıştırılır ve Jest Global Setup ve Teardown pluginleri tarafından belirlenen fonksiyonlar çalıştırılır.

Örneğin, "setup.js" dosyasında veritabanı bağlantısı ve gerekli tabloların oluşturulması gibi işlemler gerçekleştirilir. "teardown.js" dosyasında ise veritabanı bağlantısı kapatılır ve oluşturulan tablolar silinir. Bu sayede her test çalıştırıldığında aynı bilgilerin kullanılması sağlanır ve her test sonlandırıldığında yapılan tüm değişiklikler geri alınır.

Jest Global Setup ve Teardown pluginleri, testlerin daha düzenli ve verimli bir şekilde yazılmasını sağlar. Karmaşık yapıların oluşturulması ve daha büyük veriler üzerinde test yapmak için de oldukça kullanışlıdırlar.