Ana içeriğe geç

Jest

Okunuşu
cest
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/jest

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 testijavascript
// 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.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar