Coverage ölçümü
- React kursu
- İleri seviye
- Ders 47/56
- 4 dk
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
// formatPrice testini buraya yazÖrnek çözüm
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
export default {
test: {
coverage: {
thresholds: {
lines: ____,
branches: 70
}
}
}
};
export default {
test: {
coverage: {
thresholds: {
lines: 80,
branches: 70
}
}
}
};
Açıklama: lines: 80 eşik olarak yaygındır.