Mocha ile Node.js Testleri Nasıl Yazılır?

Mocha ile Node.js Testleri Nasıl Yazılır?

Bu makalede, Nodejs için kullanılan Mocha test çerçevesinin kullanımı ve test yazma süreci anlatılmaktadır Mocha, yazılım testlerinin oluşturulması ve çalıştırılması için etkili bir araçtır Bu test çerçevesi sayesinde, işlevsellik, hata mesajları, mantıksal doğruluk ve belirli koşullar altında işlevselliği kontrol etmek için test senaryoları yazabilirsiniz
Mocha, Nodejs ortamında kullanılmak üzere yüklenen bir JavaScript kütüphanesidir Yani kullanmak için Nodejs yüklü olması gerekmektedir Mocha, jest ile birlikte en yaygın kullanılan iki test çerçevesinden biridir Bu test çerçevesi, test yazma süreci boyunca tam kontrol sağlar ve geliştirme sürecinin daha az zaman almasına yardımcı olur
Mocha, testleri organize etmek ve çalıştırmak için esnek bir yapı sunar Test dosyaları, test suite'leri ve testleri gibi yapılarla organize edilebilir Ayrıca, M

Mocha ile Node.js Testleri Nasıl Yazılır?

Bu makalede, Node.js tarafından kullanılan Mocha test çerçevesinin kullanımı ve test yazma süreci açıklanacak. Mocha, yazılım testleri oluşturmak ve çalıştırmak için etkili bir araçtır. Bu test çerçevesiyle, işlevsellik, hata mesajları, mantıksal doğruluk ve belirli koşullar altında işlevselliği kontrol etmek için test senaryoları yazabilirsiniz.

Mocha, Node.js ortamında yüklenebilen bir JavaScript kütüphanesidir. Bu yüzden kullanmak için, Node.js yüklü olmalıdır. Mocha, jest ile birlikte en yaygın kullanılan iki test çerçevesinden biridir. Bu test çerçevesi, test yazma süreci boyunca size tam kontrol sağlar ve geliştirme sürecinizin daha az zaman almasına yardımcı olur.


Mocha Nedir?

Mocha, Node.js ortamında testleri çalıştırmak ve test yazmak için yaygın olarak kullanılan bir test çerçevesidir. Mocha, Jest ile birlikte en popüler test çerçevelerinden biridir ve açık kaynak kodlu bir proje olarak geliştirilmektedir.

Mocha, testleri organize etmek ve çalıştırmak için esnek bir yapı sunar. Test dosyaları, test suite'ler ve testler gibi yapılarla organize edilebilir. Ayrıca, Mocha, testleri asenkron olarak çalıştırabilir ve test sonuçlarını kolayca analiz etmek için raporlar üretebilir.


Mocha Nasıl Yüklenir?

Mocha, Node.js için popüler bir JavaScript test çerçevesidir. Mocha'yı projenize yüklemek oldukça kolaydır. Yüklemek için Terminal veya Komut İstemi kullanabilirsiniz. Terminalde npm install mocha komutunu çalıştırarak yükleyebilirsiniz. Bu komut, Mocha'yı proje bağımlılıklarınıza ekleyecektir. Mocha'yı, npm tarafından bin klasöründe barındırılan mocha komut dosyası ile birlikte yükleyebilirsiniz.

Eğer projeniz için Mocha'yı sadece geliştirme ortamında kullanmayı planlıyorsanız, devDependencies olarak yükleyebilirsiniz. Bu, yalnızca geliştirme sırasında kullanılan paketleri yüklemenize olanak tanır ve projenizin canlı ortamındaki boyutunu küçültür. Mocha'yı projenize ekledikten sonra, test yazmaya başlayabilirsiniz.

npm install mocha

Mocha yükleme işlemi oldukça basittir ve npm kullanılarak yapılır. Bu nedenle, Mocha'yı yüklemek için ilk önce terminali açmalı ve proje klasörüne gitmelisiniz. Daha sonra, aşağıdaki komutu çalıştırmanız yeterli olacaktır:

npm install mocha

Bu komut, paket bağımlılıklarını yükler ve sizi Mocha'nın son sürümüne günceller. Yükleme işlemi tamamlandıktan sonra, Mocha'yı kullanmaya hazırsınız!

komutunu çalıştırarak yükleyebilirsiniz.

Mocha, Node.js test sürecinin en önemli araçlarından biridir ve yüklemesi oldukça kolaydır. Mocha'yı yüklemek için, proje klasörünüzde terminali açın ve aşağıdaki komutu yazın:

İşletim Sistemi Komut
Unix/Mac npm install mocha
Windows npm install --global mocha

Yukarıdaki tabloda, Mocha'yı yüklemenin Unix/Mac ve Windows için farklı olduğunu görebilirsiniz. Unix/Mac kullanıcıları, Mocha'yı yüklemek için sıradan bir npm kurulumu yapabilirken, Windows kullanıcıları --global parametresini eklemelidirler.

Mocha yüklendikten sonra, test dosyalarınızı oluşturabilir ve Mocha ile çalıştırabilirsiniz. Daha fazla bilgi için Mocha'nın resmi belgelerine başvurabilirsiniz.


Mocha ile Test Dosyası Nasıl Oluşturulur?

Öncelikle, test dosyalarının oluşturulması için bir test klasörü oluşturmanız gerekmektedir. Bu klasör, projenizin ana klasörü içinde bulunabilir.

Bir test dosyası oluşturmak için, .js uzantılı bir dosya oluşturmanız gerekiyor. Bu dosyada, test edilecek fonksiyonları ve senaryoları tanımlayacaksınız.

Bir test dosyası oluşturduktan sonra, bu dosyayı Mocha'ya tanıtmak için iki önemli işlev tanımlamanız gerekiyor. Bunlardan ilki describe ve diğeri it.

İşlev Açıklama
describe() Bir test suite tanımlar ve içindeki testleri gruplandırır.
it() Bir test senaryosu belirtir ve bu senaryoyu çalıştıran bir fonksiyon belirtir.

Bir test dosyası içinde birkaç senaryo belirleyerek, her senaryo için bir it() işlevi tanımlamanız gerekiyor. Örneğin, bir aritmetik işlev test etmek istediğinizde, toplama, çıkarma, çarpma vb. işlemler için ayrı ayrı test senaryoları belirleyebilirsiniz.

Testlerinizi oluşturduktan sonra, test dosyanızı kaydedebilirsiniz. Artık testlerinizi çalıştırmak için Mocha komutunu kullanarak, projenizi test edebilirsiniz.

test

Testler, yazılan kodun doğru çalıştığından emin olmanın en önemli yollarından biridir. Mocha ile test yazmak oldukça kolaydır ve test yazma süreci, test dosyası oluşturmayı ve testleri tanımlamayı içerir. Test dosyası oluşturduktan sonra, assert kütüphanesi sayesinde beklenmeyen sonuçları bulmak da oldukça kolaydır.

Mocha, testleri çalıştırmak için kullanılan bir komut satırı aracıdır. Tüm testlerin çalıştırılması için sadece bir komutla çağırılabilir. Bir testte hata bulunduğunda Mocha, hatanın nerede olduğunu bildirecektir.

Bir test dosyası oluşturmak için, proje dosyalarınızda bir 'test' klasörü oluşturmanız yeterlidir. Bu klasörde, testler için ayrı test dosyaları yaratabilirsiniz. Test dosyalarını hazırladıktan sonra, testleri tanımlayabilirsiniz. Testleri tanımlamanın birkaç yolu vardır: describe ve it fonksiyonları gibi.

Testler, describe fonksiyonu ile başlamalıdır. Bu fonksiyon içinde, test suite için bir tanımlayıcı ve açıklama belirtilir. Testler, it işlevi ile tanımlanır ve içinde test adı ve test fonksiyonu belirtilir. Test fonksiyonu, testin beklendiği gibi çalıştığını kontrol edecek kodları içerir.

klasörü oluşturabilirsiniz. Bu klasörde,

test dosyalarınızı farklı alt klasörlerde de organize edebilirsiniz. Örneğin, bir models klasörü oluşturarak, model testlerinizi ayrı bir klasörde tutabilirsiniz. Aynı şekilde, bir controllers klasörü oluşturarak, controller testlerinizi de ayrı bir klasörde tutabilirsiniz. Bu, büyük projelerde test dosyalarınızı daha organize ve kolay yönetilebilir hale getirecektir. Mocha ile testlerinizin doğru bir şekilde çalışması için, test dosyalarının adının .test.js uzantılı olmasına dikkat edin. Test dosyalarınızın adlarını, test edilen öğelerle de ilgili olmasını sağlamak, testlerinizi daha anlaşılır hale getirecektir.

.js

Node.js, JavaScript dili için bir çalıştırma ortamıdır. Bu, Node.js projesinde kullanılan tüm dosyaların JavaScript dosyaları olması anlamına gelir. `.js` uzantılı dosyalar, Node.js projesinde yazılan kodun çalıştırıldığı dosyalardır. Bu nedenle, Node.js kullanarak yazılan bir uygulamanın testleri de `.js` dosyaları şeklinde olacaktır.

Node.js, JavaScript kodu çalıştırmak için tarayıcıyı kullanmayan bir platformdur. Bu nedenle, bir Node.js projesinde, `.js` dosyaları tarayıcıda çalışabilir JavaScript kodu yerine Node.js ortamında çalışan kodlar içerir. `.js` dosyaları, Node.js projesinde tüm kodun yürütüldüğü yerdir, bu nedenle özel dikkat gerektiren kritik dosyalardır.

Node.js tarafından yürütülen JavaScript kodu, tarayıcı tarafından yürütülen JavaScript kodundan farklıdır. Node.js, tarayıcı tarafından sağlanan DOM'a erişim sağlamaz ve temel olarak sunucu taraflı bir teknolojidir. Bu nedenle, `.js` dosyaları, Node.js projesinde tarayıcıya özgü özelliklere sahip olan JavaScript kodunu içermezler.

uzantılı test dosyaları oluşturabilirsiniz.

Test dosyaları, test klasöründe yeni bir dosya oluşturularak oluşturulabilir. Bu dosyalar '.js' uzantılı olmalıdır. Dosya adı, testin neyle ilgili olduğunu açıklayacak şekilde olmalıdır.

Tüm test dosyaları, Node.js modül yapısıyla görüşmeli ve test edilen program/inşa süreci ne kadar büyük olursa olsun, her test dosyası yalnızca bir veya birkaç fonksiyonu test etmelidir.

Bu sayede, uygulama düzeyindeki hataları daha hızlı tespit edebilir ve test dosyaları daha kolay yönetebilirsiniz. Test dosyalarınızda açıklama eklemek, diğer geliştiricilerin testlerin amacını ve yapıldığı şekli anlamalarına yardımcı olabilir.


Tanımlayıcı ve Açıklama

describe adlı bir işlevle başlar. Bu işlev içinde, test suite için bir tanımlayıcı ve açıklama belirtilir. Tanımlayıcı, test suite'i diğer test suitelerinden ayırt eder. Açıklama, test suite'in neyi test ettiğini açıklar. Örneğin, bir matematik kütüphanesi test ediyorsanız, tanımlayıcı "Aritmetik İşlevleri" olabilir ve açıklama, "Aritmetik işlevlerinin doğru şekilde çalıştığından emin olun" gibi olabilir. Bu, diğer geliştiriciler için testin amacını kolayca anlamalarına yardımcı olur.

describe

Tanımlayıcı ve Açıklama

Test dosyaları, describe adlı bir işlevle başlar. Bu işlev içinde, test suite için bir tanımlayıcı ve açıklama belirtilir. Aşağıda örnek bir describe işlevi gösterilmiştir:

Kod:
describe('Aritmetik İşlevi', function() {  // testler buraya gelecek});      
Açıklama: Bu kod bloğunda, 'Aritmetik İşlevi' tanımlayıcısı ve bir işlev belirtildi. Bu işlev, aritmetik işlevlerinin doğru çalıştığını test etmek için kullanılabilir.

describe işlevi, içinde tanımlanan tüm it işlevlerini gruplamak için kullanılır. Bu sayede, aynı test suite içinde birden fazla test tanımlanabilir. Ayrıca, açıklamalar da tüm test suite için ortak olarak belirtilebilir.

Aşağıdaki örnek kod bloğunda, 'Toplama İşlevi' adlı bir test suite, iki adet test tanımlanmıştır:

Kod:
describe('Toplama İşlevi', function() {  it('2 ve 3\'ün toplamı 5 olmalıdır', function() {    // test kodları buraya gelecek  });  it('10 ve 20\'nin toplamı 30 olmalıdır', function() {    // test kodları buraya gelecek  });});      
Açıklama: Bu kod bloğunda, 'Toplama İşlevi' adlı bir test suite ve iki adet it işlevi belirtildi. İlk it işlevi, 2 ve 3 sayılarının doğru bir şekilde toplandığına dair bir test gerçekleştirirken, ikincisi 10 ve 20 sayılarının doğru bir şekilde toplandığına dair bir test gerçekleştirir.
adlı bir işlevle başlar. Bu işlev içinde, test suite için bir tanımlayıcı ve açıklama belirtilir.

Test dosyaları, "describe" adlı bir işlevle başlar. Bu işlev, test suite'inin bir tanımlayıcısı ve açıklamasını belirtir. Test suite, birkaç benzer testi gruplamak için kullanılır. Örneğin, bir işlevin doğru çalışması için gerekli olan birden fazla senaryo varsa, bu senaryoları aynı test suite'inde gruplamak mantıklıdır. Test suite'i aşağıdaki örnekteki gibi tanımlanabilir:

Parametre Açıklama
tanımlayıcı Test suite için bir ad belirtir.
işlev Test suite için bir açıklama belirtir.

Örneğin, bir aritmetik kütüphanesi olduğunu ve bu kütüphanenin "topla" ve "çıkar" adlı iki fonksiyon içerdiğini varsayalım. Bu iki fonksiyonu test etmek için, test suite'i şöyle tanımlanabilir:

describe('Aritmetik İşlemler', function() {  it('Toplama Fonksiyonu', function() {    // Test kodları buraya yazılır  });    it('Çıkarma Fonksiyonu', function() {    // Test kodları buraya yazılır  });});

Bu şekilde, "Aritmetik İşlemler" adlı bir test suite'i oluşturduk ve bu suite içinde "Toplama Fonksiyonu" ve "Çıkarma Fonksiyonu" adlı iki ayrı test tanımladık. Her bir test, "it" fonksiyonu ile tanımlanacaktır, bu konuyu bir sonraki paragrafta ele alacağız.


Test Ekleme

Test Ekleme

Mocha ile yazacağınız test dosyalarını oluşturduktan sonra, bu dosyalar içinde testler eklemeniz gerekmektedir. Testler, it işlevi ile tanımlanır. Bu işlev içinde, test adı ve fonksiyonu belirtilir. Fonksiyon, testin beklendiği gibi çalışıp çalışmadığını kontrol edecek kodları içerir. Test adlarını ve fonksiyonlarını yazarken, açıklayıcı ve anlaşılır olmalarına özen göstermelisiniz.

Örneğin, bir aritmetik işlevi test ederken, test adı olarak "2 ve 3'ün toplamı 5 olmalıdır" gibi bir ad verilebilir. Eğer fonksiyon, beklenen sonucu veriyorsa, test başarılıdır. Ancak fonksiyon beklendiği gibi çalışmıyorsa, hata mesajları ile karşılaşabilirsiniz. Mocha, hata mesajlarını açıklayıcı şekilde verir ve hatanın neden kaynaklandığını anlamanıza yardımcı olur.

İşlevsiz test yazmaktan kaçınmalısınız. Yani, testlerinizi yazarken, amacına uygun bir şekilde yazmaya özen göstermelisiniz. Ayrıca, bir test adı yazarken, neyi test ettiğinizi ve hangi sonuca ulaşmanız gerektiğini açıklayacak şekilde yazmalısınız. Testlerinizi mantıksal bir sırayla yazmalı ve birbirine bağımlılıklarını da göz önünde bulundurmalısınız.

Özetle, test ekleme aşaması Mocha ile test yazarken oldukça önemlidir. Testlerinizi açıklayıcı şekilde adlandırarak ve fonksiyonları doğru bir şekilde yazarak testlerinizi özenle hazırlamanız gerekir. Bu sayede, uygulamanızın hatasız bir şekilde çalışmasını sağlayabilirsiniz.

it

"it" fonksiyonu, Mocha test dosyalarında bir testin tanımlandığı işlevdir. Bu işlevin içinde test adı ve testin beklendiği davranışları kontrol eden kodlar belirtilir. "it" fonksiyonu, bir test dosyasında birçok kez kullanılabilir ve her kullanımı farklı bir testi tanımlar. Örneğin, bir aritmetik işlevinin toplama işlemi için bir test tanımlamak isterseniz, aşağıdaki gibi bir kod yazabilirsiniz:

KodAçıklama
it('2 ve 3\'ün toplamı 5 olmalıdır', function() {  assert.strictEqual(aritmetik.topla(2, 3), 5);});
Bu kod, 2 ve 3 sayılarının toplamının 5'e eşit olup olmadığını kontrol eder.

Bu şekilde birçok farklı test senaryosu için "it" fonksiyonunu kullanabilirsiniz ve Mocha, her testi ayrı ayrı çalıştırarak sonuçları raporlar. Bu sayede, Node.js projelerinizdeki kodlarınızın doğru çalışıp çalışmadığını ve beklenen davranışları gösterip göstermediğini kontrol edebilirsiniz.

işlevi ile tanımlanır. Bu işlev içinde, test adı ve fonksiyonu belirtilir. Fonksiyon, testin beklendiği gibi çalışıp çalışmadığını kontrol edecek kodları içerir.

Test Ekleme

Mocha testleri, it işlevi ile tanımlanır. Bu işlev içinde, test adı ve fonksiyonu belirtilir. Fonksiyon, testin beklendiği gibi çalışıp çalışmadığını kontrol edecek kodları içerir.

Test işlevi içinde yer alan assert fonksiyonu, testin beklenen çıktıyı verip vermediğini kontrol eder. Testlerin temel yapısı aşağıdaki gibidir:

Mocha Kodu Açıklama
it('test adı', function() { assert(condition); }); it işlevi ile bir test tanımlanır ve test fonksiyonu içinde assert fonksiyonu kullanılır. assert fonksiyonunun aldığı koşul doğruysa, test başarılı kabul edilir.

Yukarıda verilen örnekte, test adı 'test adı' olarak belirtilir ve test fonksiyonu içinde belirtilen koşul doğruysa test başarılı kabul edilir.


Mocha Test Çalıştırma

"Mocha Test Çalıştırma" başlıklı bölümde, Node.js projenizdeki testleri nasıl çalıştırabileceğinizi öğreneceksiniz. Bu süreç oldukça basittir. Mocha'yı yükleme ve test dosyalarını yazma işlemlerinin ardından, terminalde testleri çalıştırmak için sadece "mocha" komutunu kullanmanız yeterlidir.

Komut satırında "mocha" komutunu çalıştırdığınızda, Mocha tüm test dosyalarını test etmek için çalışacaktır. Mocha test süitlerindeki tüm testleri otomatik olarak yürütecek ve size sonuçları raporlayacaktır.

Ayrıca, "mocha" komutu ile bir dizi seçenek veya bayrak kullanarak testleri özelleştirebilirsiniz. Örneğin, belirli bir test dosyasını test etmek için dosyanın yolunu belirtebilirsiniz. Ayrıca, farklı raporlama biçimleri, ayrıntılı sonuçlar ve hata ayıklama seçenekleri gibi diğer birçok seçenek de mevcuttur.

Özetlemek gerekirse, Mocha ile testlerinizi çalıştırmak oldukça basittir. Terminalde tek bir "mocha" komutu kullanarak tüm testlerinizi çalıştırabilirsiniz, veya seçenekler kullanarak test sürecini özelleştirebilirsiniz.

mocha

Mocha, Node.js ortamında test yazmak için kullanılan popüler bir test çerçevesidir. Jest ile birlikte en yaygın kullanılan iki test çerçevesinden biridir. Mocha, işlevsellik, hız ve kolaylık açısından oldukça güçlüdür. Testleri yazmak için kolay kullanımı ve açıklayıcı raporları ile geliştiricilere büyük bir kolaylık sağlar. Mocha, aynı zamanda testlerin otomatik olarak çalışmasını sağlayan bir otomatik izleyiciye de sahiptir. Bu özellik, kodunuzda herhangi bir değişiklik yapıldığında testlerin tekrar çalıştırılmasını sağlar. Bu sayede, yapacağınız değişikliklerin testlerinize olumsuz etkisi olup olmadığını hızlı bir şekilde kontrol edebilirsiniz. Ayrıca, Mocha ile, testlerinize parametreler geçirebilirsiniz, böylece farklı senaryolar için testler yazabilirsiniz.

komutu ile çalıştırılabilir. Bu, tüm test dosyalarını çalıştıracaktır.

Mocha ile yazdığınız testler, komut satırında mocha komutuyla çalıştırılabilir. Bu komut, proje klasörünü taramayı ve tüm test dosyalarını çalıştırmayı sağlar. Eğer tüm test dosyalarınız bir klasör altında ise, bu klasörün path'ini belirterek, sadece o klasör altındaki test dosyalarını çalıştırmak da mümkündür.

Mocha çalıştırıldığında, test dosyaları sırayla çalıştırılır; her bir test dosyası içindeki testler ise sıraya göre çalıştırılır. Mocha, test sürecini anlık olarak konsol ekranında gösterir ve sonuçları raporlar. Bu sonuçlar, kaç testin başarılı olduğunu, kaç testin hata verdiğini ve her bir test için ayrıntılı sonuçları içerir.


Assert Kullanımı

assert kütüphanesi, beklendiği gibi davranmayan kodları bulmak için sıklıkla kullanılır. Assert işlevleri, bir koşulu doğrulamak için kullanılır ve koşul doğrulanamazsa test hata verir.

Mocha ile test dosyalarında assert kütüphanesi kullanmak için öncelikle const assert = require('assert');şeklinde bir değişken tanımlanması gerekmektedir. Assert kütüphanesi, birden çok işlev içermektedir. Bazıları şunlardır:

  • assert.fail(actual, expected, message, operator) - test başarısız olur ve belirtilen mesajı gösterir
  • assert.ok(value, message) - değer truthy ise test başarılıdır
  • assert.equal(actual, expected, message) - iki değer eşitse test başarılıdır
  • assert.notEqual(actual, expected, message) - iki değer eşit değilse test başarılıdır
  • assert.strictEqual(actual, expected, message) - hem değer hem de tür eşitse test başarılıdır
  • assert.notStrictEqual(actual, expected, message) - hem değer hem de tür eşit değilse test başarılıdır
  • assert.deepEqual(actual, expected, message) - nesnelerin içeriği eşitse test başarılıdır
  • assert.notDeepEqual(actual, expected, message) - nesnelerin içeriği eşit değilse test başarılıdır

Assert işlevleri, ayrıca bir hata fırlattığını kontrol etmek için kullanılabilir. Örneğin, bir işlevin NaN değer döndürmesi bekleniyorsa, assert işlevi kontrol edebilir ve testin hatalı olduğunu bildirebilir.

Assert işlevleri, testlerin güvenilirliğini artırmaya yardımcı olur ve kodun beklenen şekilde çalışıp çalışmadığını kontrol etmek için vazgeçilmez bir araçtır.

assert

Assert Kullanımı

Mocha ile testler yazarken, beklendiği gibi davranmayan kodları bulmak için sıklıkla kullanılan assert kütüphanesi vardır. Testlerde, belli bir koşulun doğru olup olmadığı kontrol edilir ve assert ifadesi kullanarak, koşulun yanıtını test edilebilir. Eğer koşul doğruysa, test başarılı olarak işaretlenir ve kod çalışmaya devam eder. Eğer koşul yanlışsa, assert bir hata (failure) fırlatır ve test başarısız olarak işaretlenir. Hatalar, hata mesajları ve stack trace'ler ile birlikte verilir.

Assert kütüphanesi ile birçok farklı test yapılabilir. En yaygın kullanılan test çeşitleri aşağıda sıralanmıştır:

Test Assert ifadesi
Değerlerin eşitliği assert.equal(actual, expected)
Değerlerin tam eşitliği (strict equality) assert.strictEqual(actual, expected)
Bir değerin doğru (true) olması assert.ok(value)
Bir değerin yanlış (false) olması assert.notOk(value)

Assert kütüphanesi hakkında daha fazla bilgi edinmek için, Node.js resmi dökümanlarına bakabilirsiniz.

kütüphanesi, beklendiği gibi davranmayan kodları bulmak için sıklıkla kullanılır.

Mocha ile testler yazarken, beklenmeyen sonuçlar için assert kütüphanesi sıklıkla kullanılır. Bu kütüphane, bir fonksiyonun beklenen sonucunu, döndürdüğü sonuçla karşılaştırarak doğrulama yapar. Bu kontrol sonrası, beklenmeyen bir sonuç varsa test başarısız olarak işaretlenir.

Üç temel fonksiyonu olan assert kütüphanesi, bir dizi fonksiyonla birlikte kullanılabilir. Bu fonksiyonlar arasında en yaygın kullanılan, equal işlevi, iki değerin aynı olup olmadığını kontrol eder. notEqual işlevi ise iki değerin aynı olmadığını kontrol eder. Bunun yanı sıra, deepEqual işlevi, iki değer arasındaki derin eşleşmeyi kontrol eder.

Assert Fonksiyonu Açıklama
assert.ok Değer true ise hiçbir şey yapmaz, aksi takdirde hata fırlatır
assert.equal İki değeri karşılaştırır ve eşitlik durumunda hiçbir şey yapmaz, aksi takdirde hata fırlatır
assert.notEqual İki değerin eşit olmadığını kontrol eder ve aynıysa hata fırlatır
assert.deepEqual İki değer arasındaki derin eşleşmeyi kontrol eder
assert.exists Bir nesnenin var olması gerektiğini doğrular
assert.notExists Bir nesnenin var olmaması gerektiğini doğrular

Örnek Test Dosyası

Örnek bir Mocha test dosyası kullanımını somutlaştırmak için, aşağıdaki kod örneği incelenebilir:

Dosya Konumu Kod İçeriği
/test/aritmetik.test.js
const assert = require('assert');const aritmetik = require('../lib/aritmetik');describe('Aritmetik İşlevi', function() {  it('2 ve 3\'ün toplamı 5 olmalıdır', function() {    assert.strictEqual(aritmetik.topla(2, 3), 5);  });  it('5\'ten 2 çıkarıldığında sonuç 3 olmalıdır', function() {    assert.strictEqual(aritmetik.cikar(5, 2), 3);  });});

Bu örnekte, bir aritmetik işlevi olan "topla" ve "cikar" fonksiyonları, Mocha testleri ile test edilmektedir. Dosya, "test" klasörü altında bulunan "aritmetik.test.js" dosyasında yer almaktadır.

Testler, "describe" işlevi ile birlikte belirtilen "Aritmetik İşlevi" için tanımlanmaktadır. Bu, test suite'inin bir adıdır ve içinde belirtilen tüm testlerin bu suite kapsamında olacağı anlamına gelir. Her test, "it" işlevi ile tanımlanır ve test adı ve fonksiyonu belirtilir. Fonksiyon, beklendiği gibi çalışıp çalışmadığını kontrol edecek kodları içerir. Her test için yapılan test, "assert" kütüphanesi ile belirtilir. Bu örnekte, "assert.strictEqual" kullanılmıştır. Bu, fonksiyonun döndürdüğü değerle belirtilen değer arasında bir eşleşme olup olmadığını kontrol eder.

Bu örnekteki testler, basit aritmetik işlemlerini test etmek için kullanılmıştır. Ancak, gerçek hayatta testler, daha karmaşık işlevleri ve çözümleri test etmek için kullanılır. Mocha, bu testlerin kolayca ve sistematik bir şekilde yazılmasını ve yürütülmesini sağlayan güçlü bir test çerçevesi sunmaktadır.

```

Mocha kullanarak test yazma süreci oldukça basittir. İlk adım, proje klasöründe bir test klasörü oluşturmak ve bu klasörde .js uzantılı test dosyaları oluşturmaktır. Bu dosyalarda, test edilecek fonksiyonlar ve test senaryoları tanımlanacaktır.

Bir test senaryosu yazmadan önce, test açıklaması ve tanımlayıcısı belirlenmelidir. Bu, describe işlevi kullanılarak yapılır ve test suite'in adı ve açıklaması belirtilir. Testler, it işlevi kullanılarak tanımlanır ve test senaryosunun adı ve fonksiyonu belirtilir. Fonksiyon, test senaryosunun gerektirdiği kontrol ve asertifler ile birlikte yazılır.

Testler, birbirinden bağımsız olarak çalışmaları gerektiğinden ve bir testin başarılı olup olmadığının tespit edildikten sonra diğer testlerin çalıştırılması gerektiğinden, testler genellikle kendine özgü bir veri kümesinde çalıştırılır. Bu, test sürelerinin kısa kalmasını sağlar ve hata ayıklama sürecini kolaylaştırır.

const assert

assert: Mocha ile testler yazarken kullanılan bir kütüphanedir. assert, beklendiği gibi davranmayan kodları bulmak için sıklıkla kullanılır. Bu kütüphane, Node.js'in dahili bir kütüphanesi olduğu için herhangi bir yükleme işlemine ihtiyaç duyulmaz.

'assert.strictEqual()': assert kütüphanesi, test sonuçlarının belirli bir değere sahip olması gerektiğinde kullanılır. Mocha testleri sırasında bu yöntemi kullanarak, testin beklenen değerle eşleşip eşleşmediğini kontrol edebilirsiniz. assert.strictEqual(actual, expected) yöntemi, actual ve expected değerlerini karşılaştırır ve sıkıştırma operatörü (===) kullanarak eşit olup olmadıklarını kontrol eder. Eğer iki değer birbirine eşitse, test başarılıdır.

Methot Açıklama
assert() Bir koşulun true olup olmadığını kontrol eder.
assert.deepStrictEqual() Nesnelerin veya öğelerin eşitliğini derinlemesine kontrol eder.(stictEqual() gibi ancak nesne ve referans tipleri için derinlemesine karşılaştırır)
assert.equal() İki değerin eşit olmasını kontrol eder. Datatype'a bakmaz.
assert.notEqual() İki değerin eşit olmadığını kontrol eder. Datatype'a bakmaz.
assert.strictEqual() İki numaranın value ve tiplerinin eşit olmasını kontrol eder.
const aritmetik

const aritmetik = require('../lib/aritmetik');

Bu satır, test dosyasında kullanılacak aritmetik adlı bir modülü içe aktarır. Modül, topla ve cikar adlı iki aritmetik işlev içerir. Modülü içe aktarmak, testlerin bu işlevleri kullanarak aritmetik işlemlerin doğruluğunu kontrol etmesine olanak tanır.

Bunun yanı sıra, require işlevi, projenin `lib` klasörü içindeki `aritmetik` modülünü arar. Bu kodda kullanılan yol içindeki iki nokta, proje klasörünün üstündeki dosyalara erişmek için kullanılan bir işarettir.

Modül içe aktarıldıktan sonra, test dosyası içinde aritmetik.topla ve aritmetik.cikar işlevleri çağrılarak sonuçları assert.strictEqual işlevi ile karşılaştırılır ve testlerin doğruluğu kontrol edilir.

describe('Aritmetik İşlevi', function() {

'describe('Aritmetik İşlevi', function() {' işlevi Mocha test dosyalarında kullanılan bir işlevdir ve test süiti için bir tanımlama yapar. Bu tanımlama, test edilecek fonksiyonun adını belirtir ve bir açıklama içerir. Örneğin, yukarıdaki örnek test dosyasında 'Aritmetik İşlevi' tanımlayıcısı kullanılmıştır.

Bir test süiti, birden fazla test içerebilir ve bu testler aynı fonksiyonun farklı girdileri veya durumları üzerinde yapılan testler olabilir. Testler, describe işlevinin içinde yer alan it işlevleri ile tanımlanır ve her bir test, bir ad ve bir fonksiyon içerir. Fonksiyon, beklentilerin doğru olup olmadığına dair ifadeler içerir ve assert kütüphanesiyle test edilir.

Test süitlerinde tanımlayıcılar ve açıklamalar, testlerin anlaşılmasına ve yönetilmesine yardımcı olur. Her testin adı açıkça belirtilir ve testin neye odaklandığı anlaşılır. Örneğin, yukarıdaki örnek dosyada, topla ve cikar fonsiyonları için iki ayrı test tanımlanmıştır ve her testin adı belirtilmiştir.

it('2 ve 3\'ün toplamı 5 olmalıdır', function() {

Bu test, aritmetik işlevin toplama özelliğini kontrol eder. Test, it işlevi ile tanımlanır ve test adı, "2 ve 3'ün toplamı 5 olmalıdır" olarak belirtilmiştir. Fonksiyon içinde ise assert.strictEqual() kullanılmıştır. Tanımlanan assert.strictEqual() işlevi, aritmetik modülü içinde tanımlanan topla() fonksiyonunu, 2 ve 3 parametreleriyle çağırır ve sonucun 5 olması beklenir.

Parametreler Sonuç
2, 3 5
assert.strictEqual(aritmetik.topla(2, 3), 5);

Bu kod satırı, Mocha test çerçevesinin assert kütüphanesini kullanarak bir aritmetik toplama işlevini test etmesini sağlar. assert.strictEqual() işlevi, beklendiği gibi çalışmayan kodları bulmak için kullanılır. Bu örnekte, 2 ve 3 sayılarının toplamının 5 olması beklenir. Test, toplama işlevinin doğru sonuç üretip üretmediğini kontrol ederek gerçekleştirilir. Eğer test başarılıysa, konsola hiçbir çıktı yazdırılmaz. Ancak, eğer bir hata varsa, assert hata mesajı yazdırır ve test başarısız kabul edilir.

});

Yukarıdaki kod örneği, iki ayrı test içerir. Her iki test de, assert kütüphanesi kullanılarak işlevlerin doğru çalıştığı kontrol edilir. İlk testte, 2 ve 3 sayılarının toplanması sonucunun 5 olması beklenir. İkinci testte ise, 5 sayısından 2 sayısının çıkarılması sonucunun 3 olması beklenir. Test dosyası çalıştırıldığında, her iki test de beklenen sonucu veriyorsa, testler geçerli demektir ve test sonuçları yeşil renkte (pass) görüntülenir. Eğer bir test beklenen sonucu vermiyorsa, test başarısız olur ve test sonucu kırmızı renkte (fail) görüntülenir.

it('5\'ten 2 çıkarıldığında sonuç 3 olmalıdır', function() {

Bu test, 5'ten 2 çıkarıldığında sonucun 3 olup olmadığını kontrol eder. Testi yazmak için bir it işlevi kullanılır, test adı ve testin çalışması için bir fonksiyon tanımlanır. Fonksiyon, önce aritmetik modülünden çıkar fonksiyonunu kullanarak 5'ten 2'yi çıkarır. Ardından, assert.strictEqual fonksiyonu kullanılarak çıktı 3 ile karşılaştırılır. Eğer çıktı 3 değilse, assert hata mesajı döndürür ve test başarısız olur.

5'ten 2 Çıkarma Testi Özeti
Test Adı Beklenen Sonuç Gerçek Sonuç Durum
5'ten 2 çıkarma 3 3 Başarılı

Bu test, aritmetik fonksiyonları yazarken yapılan hataları tespit etmeye yardımcı olur. Test işlevleri belirli koşulları kontrol ederek, hataları önleyebilir ve kodun daha sağlam hale gelmesini sağlayabilir.

assert.strictEqual(aritmetik.cikar(5, 2), 3);

Bu satır, bir aritmetik işlevinin iki sayıdan farkını hesaplayan bir testi tanımlar. Test, 5'ten 2 çıkarıldığında sonuç 3 olmalıdır koşulunu kontrol eder.

  • assert.strictEqual: Bu, assert kütüphanesinin bir parçasıdır ve iki değerin aynı olup olmadığını karşılaştırır. Eğer değillerse, test başarısız olacaktır.
  • aritmetik.cikar: Bu, test edilen işlevdir.
  • (5,2): Bu, işlemin argümanlarıdır. Yani, 5'ten 2 çıkarılır.
  • 3: Bu, işlemin beklenen sonucudur.
Bu test, işlevin beklendiği gibi çalışıp çalışmadığını kontrol eder ve kodda olası hataları belirlemek için kullanılabilir. Bu örnek, Mocha ile test yazarken kullanabileceğiniz temel bir yapıdır ve işlevin amacına yönelik olarak benzer testleri kendi projelerinizde oluşturabilirsiniz.

});

Yukarıdaki örnek test dosyasında, iki test eklenmiştir. Birincisi, 2 ve 3 sayılarının toplamının 5 olup olmadığını kontrol eder, ikincisi ise 5'ten 2 çıkarıldığında sonucun 3 olup olmadığını kontrol eder.

Test fonksiyonları, assert kütüphanesini kullanarak beklendiği gibi çalışıp çalışmadığını kontrol edecek kodları içerir. Bu kodlar, test başarısız olduğunda hata mesajı döndürür.

Test dosyaları, bir aritmetik işlevi test eden çok daha büyük bir paket içinde yer alabilir. Bu şekilde, uygulamanın farklı parçalarındaki hataları bulmak için kapsamlı testler yazılabilir.

});

Bir Mocha test dosyası, bir veya daha fazla test suite içerir. Bu test suiteleri, belirli bir kod bloğuna ilişkin testleri gruplandırmak için kullanılır. Bir test, it işlevi ile tanımlanır ve testin adı ve fonksiyonu belirtilir. Fonksiyon, testin beklendiği gibi çalışıp çalışmadığını kontrol edecek kodları içerir. Testlerin sonuçları, assert kütüphanesi kullanılarak kontrol edilir.

Mocha test dosyasında includes, require gibi Node.js özellikleri kullanılabilir. Testler arasındaki veri akışını sağlamak için değişkenler tanımlanabilir. Bu değişkenler it işlevi içinde kullanılabilir veya bir testten diğerine aktarılabilir.

Mocha ile test dosyaları oluşturmak ve çalıştırmak oldukça basittir. İndirmek için tek yapmanız gereken npm install mocha çalıştırmaktır. Daha sonra test klasörünüzü oluşturabilir ve içinde testlerinizi yazabilirsiniz. Son olarak, mocha komutunu kullanarak yazdığınız testleri çalıştırabilirsiniz. Bu basit adımlarla, Node.js kodunuzu test etmek ve uygulamanızdaki hataları bulmak için Mocha'yı kullanabilirsiniz.

```

Bu makalede, Node.js'in popüler bir test çerçevesi olan Mocha'nın kullanımı ele alındı ve test yazma süreci açıklandı. Mocha, Jest ile birlikte en yaygın kullanılan iki test çerçevesinden biridir. Mocha yüklemek için npm kullanabilirsiniz, yeni bir test dosyası oluşturmak için proje klasörünüzde bir test klasörü oluşturabilirsiniz. Test dosyaları, describe adlı bir işlevle başlar ve testler, it işlevi ile tanımlanır. Mocha, komut satırında mocha komutu ile çalıştırılabilir ve assert kütüphanesi beklendiği gibi davranmayan kodları bulmak için sıklıkla kullanılır.

Aşağıdaki örnek kod, bir aritmetik işlevi test eden bir Mocha test dosyasıdır:

const assert = require('assert');const aritmetik = require('../lib/aritmetik');describe('Aritmetik İşlevi', function() {  it('2 ve 3\'ün toplamı 5 olmalıdır', function() {    assert.strictEqual(aritmetik.topla(2, 3), 5);  });  it('5\'ten 2 çıkarıldığında sonuç 3 olmalıdır', function() {    assert.strictEqual(aritmetik.cikar(5, 2), 3);  });});