Test database
- Node.js kursu
- İleri seviye
- Ders 75/83
- 5 dk
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
// beforeEach ile temizlik tanımla
// buraya yaz
// "Temizlik hazır" yazdır
// buraya yazÖrnek çözüm
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?
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
____(async () => { await db.query("DELETE FROM users"); });
beforeEach(async () => { await db.query("DELETE FROM users"); });
Açıklama: beforeEach her testten önce çağrılır.