# Jest

Adres: https://softwaredictionary.org/tr/terimler/jest
Kategori: Test ve Kalite
Son güncelleme: 2026-10-03
Okunuşu: cest

Kısaca: Jest; test çalıştırıcıyı, doğrulamaları, mock'lamayı, snapshot'ları ve kod kapsamını az kurulumla tek pakette sunan popüler JavaScript test framework'üdür.

## Jest nedir?

Jest, Facebook'ta (bugünkü adıyla Meta) geliştirildi ve 2022'den bu yana OpenJS Foundation'ın bir parçası. Ondan önce JavaScript projeleri genellikle birkaç aracı bir araya getirirdi: testleri çalıştırmak için biri, doğrulamalar için biri, mock'lar için bir başkası, kapsam için de bir diğeri. Jest bunların hepsini bir arada sunar; başlamak için `npm install --save-dev jest` ve bir test dosyası yeterlidir.

Testler `test` (ya da `it`) ile yazılır ve `describe` ile gruplanır. İçeride `expect`, sonuçları `toBe`, `toEqual` ya da `toThrow` gibi eşleştiricilerle (matcher) denetler. Jest `.test.js` ya da `.spec.js` ile biten dosyaları kendisi bulur, paralel işçi süreçlerinde çalıştırır; izleme (watch) modunda da yalnızca değiştirdiğiniz dosyalardan etkilenen testleri yeniden çalıştırır.

Mock'lama yerleşiktir: `jest.fn()` nasıl çağrıldıklarını kaydeden sahte fonksiyonlar oluşturur, `jest.mock()` da bir API istemcisi gibi bütün modülleri değiştirir; böylece birim testleri hızlı kalır ve ağa bağımlı olmaz. Snapshot testleri bir bileşenin ya da fonksiyonun çıktısını kaydeder ve sonradan beklenmedik biçimde değişirse başarısız olur; `--coverage` de testlerin hangi satırları çalıştırdığını raporlar.

Sık yapılan bir yanlış, Jest testlerinin gerçek bir tarayıcıda çalıştığı düşüncesidir. Varsayılan olarak Node.js'te, isteğe bağlı olarak da benzetilmiş bir tarayıcı ortamı olan jsdom ile çalışırlar; gerçek tarayıcılar için Playwright gibi uçtan uca test araçları kullanılır. Vite ile kurulan projelerde birçok ekip artık Jest uyumlu bir API sunan Vitest'i seçiyor.

## Önemli noktalar

- Jest, hepsi bir arada bir JavaScript test framework'üdür.
- Bir test çalıştırıcı, doğrulamalar, mock'lama, snapshot'lar ve kapsam içerir.
- Testler describe, test ve toEqual gibi eşleştiricilerle expect kullanır.
- jest.fn() ve jest.mock() birim testlerinde gerçek bağımlılıkların yerini alır.
- Testler gerçek bir tarayıcıda değil, Node.js'te ya da jsdom'da çalışır.

## Örnek: Mock'lanmış bir fonksiyonla birim testi

```javascript
// cart.test.js
import { total } from "./cart";

describe("total", () => {
  test("adds up item prices", () => {
    expect(total([{ price: 10 }, { price: 5 }])).toBe(15);
  });

  test("applies a discount from a fake service", () => {
    const getDiscount = jest.fn().mockReturnValue(0.1); // a mock
    expect(total([{ price: 100 }], getDiscount)).toBe(90);
    expect(getDiscount).toHaveBeenCalledTimes(1);
  });
});
```

## Sık sorulan sorular

**Jest ile Vitest arasındaki fark nedir?**

İkisi de API'leri çok benzer olan JavaScript test çalıştırıcılarıdır. Vitest Vite üzerine kuruludur ve onun yapılandırmasını yeniden kullanır; bu yüzden Vite projelerine uyar ve hızlı başlar. Jest ise daha eskidir, framework'ten bağımsızdır ve çok yaygın kullanılır.

**Jest yalnızca React için mi?**

Hayır. Jest React ile popüler oldu; ama Node.js servisleri, yardımcı fonksiyonlar ve diğer framework'ler dahil her JavaScript ya da TypeScript kodunu test eder.

**Jest'te snapshot testi nedir?**

Snapshot testi, bir fonksiyonun ya da bileşenin çıktısını ilk çalıştığında bir dosyaya kaydeder, sonra çıktı değişirse başarısız olur; böylece istenmeyen değişiklikler inceleme sırasında fark edilir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
