CodeBlanks Logo Icon CodeBlanks

Test database

Test veritabanı ve fixture öğrenirsin.

Test database

Integration testler gerçek veritabanına yazarsa veriyi bozar. Bu yüzden ayrı bir test veritabanı kullanılır. Test veritabanı her testten önce temizlenir; böylece testler birbirinden bağımsız çalışır.

Örnek: üretim myapp veritabanını, testler myapp_test veritabanını kullanır. process.env.NODE_ENV === "test" iken uygulama test veritabanına bağlanır. Her testten önce beforeEach ile tablolar temizlenir. Bu, testlerin tekrarlanabilir olmasını sağlar. Test veritabanı üretim veritabanıyla aynı yapıya sahip olmalıdır; migration'lar her ikisine de uygulanır. Test veritabanı kullanmak, integration testlerin üretimi etkilemeden güvenle çalışmasını sağlar.

beforeEach ile temizleme

Her testten önce veritabanını temizlemek, testlerin birbirini etkilemesini önler. Jest'te beforeEach her testten önce çağrılır; burada tabloları boşaltırsın.

Örnek: beforeEach(async () => { await db.query("DELETE FROM users"); });. Bu, her testten önce users tablosunu boşaltır. Böylece bir test eklediği kayıt diğerini etkilemez. afterEach de her testten sonra çağrılır; bazen temizleme orada yapılır. Temizleme, testlerin sıra bağımsız olmasını sağlar. Testler istediğin sırada koşulabilmeli; herhangi bir sıra çalışmalı. Bu, test güvenilirliğinin temelidir. Test veritabanı olmadan bu mümkün olmaz.

Uygulama Test temizleme ekle

beforeEach(async () => { console.log("Temizlendi"); }) ile test temizleme tanımla. console.log ile "Temizlik hazır" yaz.

Başlangıç kodu

index.js
// beforeEach ile temizlik tanımla
// buraya yaz

// "Temizlik hazır" yazdır
// buraya yaz

Örnek çözüm

index.js
beforeEach(async () => {
  console.log("Temizlendi");
});
console.log("Temizlik hazır");

Beklenen çıktı

Temizlik hazır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Kavramı rolüne eşle

Kavram Anlamı
test veritabanı Testlerin verisi
NODE_ENV=test Test moduna geçirir
beforeEach Her testten önce temizler
myapp_test Test veritabanı adı

2 Test veritabanı neden kullanılır?

index.js
NODE_ENV=test → myapp_test
  • Üretim verisini bozmamak için Doğru cevap
  • Daha hızlı network için
  • Daha renkli log için
  • Daha az bellek için

Açıklama: Test veritabanı üretim verisini korur.

3 beforeEach çağrısını tamamla

Soru
____(async () => { await db.query("DELETE FROM users"); });
Cevap
beforeEach(async () => { await db.query("DELETE FROM users"); });

Açıklama: beforeEach her testten önce çağrılır.

İleri seviye bölümündeki tüm dersler