Jest
- 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
// 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
- Birim TestiTest ve Kalite, s. 4Birim testi, bir fonksiyonun, metodun ya da sınıfın programın geri kalanından yalıtılmış olarak doğru davrandığını doğrulayan küçük ve otomatik bir kontroldür.
- Test RunnerTest ve Kalite, s. 34Test runner, bir projenin otomatik testlerini genellikle tek komutla bulan, çalıştıran ve hangilerinin geçtiğini ya da başarısız olduğunu raporlayan araçtır.
- MockingTest ve Kalite, s. 16Mocking, kodu yalıtılmış biçimde test etmek için veritabanı ya da API gibi gerçek bir bağımlılığı kontrol ettiğiniz bir sahteyle değiştiren test tekniğidir.
- Snapshot TestiTest ve Kalite, s. 24Snapshot testi, kodun çıktısını ilk çalıştırmada bir dosyaya kaydeden ve sonraki çalıştırmalarda çıktı bu kopyayla eşleşmezse başarısız olan bir tekniktir.
- Test KapsamıTest ve Kalite, s. 30Test kapsamı, otomatik testler çalışırken bir programın kaynak kodunun ne kadarının yürütüldüğünü ölçen ve genellikle yüzde olarak gösterilen bir metriktir.
- JavaScriptWeb Geliştirme, s. 25JavaScript, web tarayıcılarında sayfaları etkileşimli hale getiren ve Node.js gibi çalışma ortamlarıyla sunucularda da çalışan programlama dilidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin