CodeBlanks Logo Icon CodeBlanks

Coverage ölçümü

Test kapsamını ölçmeyi ve okumayı öğrenirsin.

Coverage ölçümü

Coverage, testlerin kaynak kodun yüzde kaçına değdiğini ölçer. Vitest ve Jest, c8 veya istanbul aracılığıyla satır, dal ve fonksiyon yüzdesini verir.

Yapılandırmada eşik (threshold) belirlersin: lines: 80 altına düşerse build başarısız olur. Bu, testlerin zamanla erimesini engeller.

Coverage iyi bir göstergedir ama kalıte garantisi değildir; önemli dalların kapsandığını elle denetlersin.

Eşik ve kalıte

Bir eşik branches: 70 yazdığında, dal kapsaması yüzde 70'in altına düşerse test koşusu hata koduyla biter. CI bunu yakalayıp build'i durdurur.

Ancak yüzde 100 coverage her hatayı bulmaz; bir dalı çağıran test yine de beklenen sonucu denetlemeyebilir. Bu yüzden expect ile anlamlı doğrulamalar yaparsın.

Dosya bazında eşik de konabilir; yeni eklenen dosya düşük coverage'siz birleşemez.

Uygulama formatPrice testini yaz

utils.test.jsx içeriğini yaz. formatPrice fonksiyonunu içe aktar. test('fiyat biçimler', () => {}) içinde expect(formatPrice(120)).toBe('120 TL') ve expect(formatPrice(0)).toBe('0 TL') doğrula.

Başlangıç kodu

App.jsx
// formatPrice testini buraya yaz

Örnek çözüm

App.jsx
import { formatPrice } from './utils';

test('fiyat biçimler', () => {
  expect(formatPrice(120)).toBe('120 TL');
  expect(formatPrice(0)).toBe('0 TL');
});

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Coverage türlerini eşleştir

Kavram Anlamı
lines Çalışan satır oranı
branches Dal kapsaması
functions Çağrılan fonksiyon
thresholds Alt sınır

2 Coverage yüzde 100 olduğunda ne anlama gelir?

  • Hiç hata kalmadığı
  • Test yazmaya gerek kalmadığı
  • Tüm satır ve dalların çağrıldığı, kalıte garantisi olmadığı Doğru cevap
  • Build'in bir dakikada biteceği

Açıklama: Yüzde 100 kapsama kalıte garantisi değildir.

3 Boşluğu doldur: coverage eşiklerini ayarla

Soru
export default {
  test: {
    coverage: {
      thresholds: {
        lines: ____,
        branches: 70
      }
    }
  }
};
Cevap
export default {
  test: {
    coverage: {
      thresholds: {
        lines: 80,
        branches: 70
      }
    }
  }
};

Açıklama: lines: 80 eşik olarak yaygındır.

İleri seviye bölümündeki tüm dersler