Test Runner'lar — Vitest & Unit Test

Test Runner'lar — Vitest & Unit Test: Vitest, bir öğretmenin sınıftaki tüm ödevleri aynı anda, ama sadece değişen sayfaları yeniden okuyarak kontrol etmesi gibidir — bir önceki k

Vitest, bir öğretmenin sınıftaki tüm ödevleri aynı anda, ama sadece değişen sayfaları yeniden okuyarak kontrol etmesi gibidir — bir önceki kontrolden bu yana değişmeyen ödev kağıtlarını tekrar baştan okumaz, sadece dokunulan dosyaları (watch mode) yeniden tarar ve sonucu saniyeler içinde ✅/❌ olarak gösterir. Peki Jest gibi köklü bir test runner zaten varken neden Vitest gibi yeni bir araç çıktı? Çünkü Jest, TypeScript dosyalarını çalıştırmadan önce ayrı bir derleme adımından (genelde Babel veya ts-jest) geçirir ve bu, büyük projelerde gözle görülür bir yavaşlık yaratır; Vitest ise Vite'in zaten kullandığı esbuild tabanlı anlık derlemeyi kullanarak bu adımı neredeyse sıfıra indirir — Java'da bunun karşılığı, Maven'in her seferinde tüm projeyi yeniden derlemesi yerine artımlı (incremental) derleme yapmasına benzer. QA'da somut faydası: yüzlerce test dosyası olan bir TypeScript projesinde, sadece bir dosyayı değiştirdiğinizde Vitest watch mode sadece o dosyayla ilgili testleri saniyeler içinde yeniden çalıştırır; Jest'te aynı senaryo, derleme adımı yüzünden gözle görülür şekilde daha yavaş hissedilebilir.

Vitest: Vite-Native Test Runner

Playwright Test zaten kendi test runner'ı ile geliyor — uçtan uca tarayıcı testleri için Vitest'e ihtiyacın yok. Ama düz bir TypeScript yardımcı fonksiyonu yazdığın an (bir fiyat formatlayıcı, bir veri parser'ı, özel bir wait utility'si), o fonksiyonu tarayıcı açmadan, izole şekilde unit test etmek istersin. İşte burada Vitest devreye girer: Vite üzerine kurulu, hızlı, Jest-uyumlu bir test runner — sıfır konfigürasyonla TypeScript desteği sunar. Jest ise daha eski, daha köklü alternatiftir — aynı API şekli (describe, it, expect), daha yavaş başlangıç, ve TypeScript'i anlaması için ts-jest gerektirir.

Vitest ile unit test akışı

Vite tabanlı ultra hızlı test runner — describe/it/expect API'si Jest ile aynı

describe ile grup, it ile tek test, expect ile assertion — üç katman birlikte kullan

CI'da npx vitest run tek seferlik çalıştırır; npx vitest watch geliştirme modundadır

Vitest ile bir fonksiyonu test etme adımları:

Test edilecek fonksiyonu import et

describe ile test grubunu tanımla

it ile senaryoyu yaz ve expect ile doğrula

npx vitest run ile testleri çalıştır

it('negatif girişte hata fırlatır', () => { expect(() => formatPrice(-50)).toThrow('...') }) — bu testte expect neden fonksiyon sarmalıyor?

Hata fırlatacak kodu yakalamak için — direkt çağrı testi çökertiyor