crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
1. Unit Testing (Birim Testi) Nedir?
Unit Testing, uygulamanın en küçük parçalarının (genellikle fonksiyonların) tek başına ve izole bir şekilde doğru çalışıp çalışmadığını kontrol etmektir.
Neden Test Yazmalıyız?
Refactoring Güveni: Kodda bir değişiklik yaptığınızda, diğer yerlerin bozulup bozulmadığını saniyeler içinde anlarsınız.
Dökümantasyon: Testler, kodun ne yapması gerektiğini anlatan canlı birer dökümandır.
Hata Maliyeti: Hataları üretim aşamasında (production) değil, geliştirme aşamasında yakalamanızı sağlar.
2. Jest Kurulumu ve İlk Test
Jest, "sıfır konfigürasyon" mottosuyla gelir. Kurmak için projenizde şu komutu çalıştırmanız yeterlidir:
Bash:
npm install --save-dev jest
package.json dosyanıza test script'ini ekleyin:
JSON:
"scripts": {
"test": "jest"
}
Şimdi bir hesapla.js dosyamız olduğunu varsayalım:
JavaScript:
function topla(a, b) {
return a + b;
}
module.exports = topla;
Bunu test etmek için hesapla.test.js dosyasını oluşturuyoruz:
JavaScript:
const topla = require('./hesapla');
test('2 + 3 sonucunun 5 olması gerekir', () => {
expect(topla(2, 3)).toBe(5);
});
Terminalde npm test yazdığınızda Jest size yeşil bir "PASS" (Geçti) raporu sunacaktır.
3. Matchers (Eşleştiriciler)
Jest, değerleri kontrol etmek için "Matchers" denilen yardımcı fonksiyonlar kullanır.
toBe(x): Tam eşitlik (referans kontrolü).
toEqual(obj): Obje veya dizi içeriğinin eşitliği (derin kontrol).
toContain(item): Bir dizinin belirli bir elemanı içerip içermediği.
toBeNull(), toBeDefined(), toBeTruthy(): Özel durum kontrolleri.
4. Mocking: Dış Dünyayı Simüle Etmek
Birim testlerinde fonksiyonun dışa bağımlı olmaması gerekir. Örneğin, bir fonksiyon veritabanına bağlanıyorsa, test sırasında gerçekten veritabanına gitmeyiz; bunun yerine "sahte" (mock) bir cevap oluştururuz.
JavaScript:
const axios = require('axios');
jest.mock('axios');
test('Kullanıcı verisini getirmeli', async () => {
axios.get.mockResolvedValue({ data: { name: 'Can' } });
const veri = await kullaniciGetir();
expect(veri.name).toBe('Can');
});
5. Test Coverage (Test Kapsamı)
Projenizdeki kodun yüzde kaçının test edildiğini bilmek ister misiniz? Jest bunu sizin için hesaplar. jest --coverage komutunu çalıştırdığınızda, hangi satırların test edildiğini gösteren detaylı bir tablo ve HTML raporu oluşturur.
Sonuç
Test yazmak başta "yük" gibi görünse de, projeniz büyüdükçe en büyük kurtarıcınız olur. Jest'in sunduğu hız ve kolaylık sayesinde, yazdığınız her satır koda daha fazla güvenir ve geceleri "acaba bir yeri bozdum mu?" diye düşünmeden rahat uyursunuz.