Before ve after
- Node.js kursu
- Orta seviye
- Ders 85/116
- 5 dk
before/beforeEach/afterEach hook'larını öğrenirsin.
Kanca kavramı
Testlerin öncesinde ve sonrasında çalışan fonksiyonlara kanca (hook) denir. node:test'te dört kanca vardır: before gruptan önce bir kez, after gruptan sonra bir kez, beforeEach her testten önce, afterEach her testten sonra çalışır.
Örnek: before(() => { db = aç(); }) bir veritabanı bağlantısı açar; after(() => { db.kapat(); }) kapatır. beforeEach(() => { sayaç = 0; }) her test öncesinde sayacı sıfırlar; böylece testler birbirinden etkilenmez. Kancalar describe içinde tanımlanırsa yalnızca o gruba uygulanır. Kancaların sırası: before → (her test için: beforeEach → test → afterEach) → after.
before ve beforeEach farkı
before ile beforeEach sıklıkla karıştırılır. before gruptan ÖNCE bir kez çalışır; pahalı kurulumlar için uygundur (ör. veritabanı bağlantısı açma). beforeEach her testten önce çalışır; her teste temiz bir başlangıç verir (ör. değişkenleri sıfırlama).
Örnek: before(() => { kurulum(); }) ve beforeEach(() => { veri = []; }). after ve afterEach de benzer şekilde sonrasında çalışır. Kancaları describe'ın en üstüne koymak okunurluğu artırır; önce kurulum, sonra testler. Bir kanca hata fırlatırsa o gruptaki testler atlanır.
Uygulama Kancaları bir testle bağla
node:test'ten test, before ve after'ı içe aktar. let durum = "boş"; tanımla. before(() => { durum = "hazır"; }) ve after(() => { durum = "bitti"; }) ekle. test("test", () => {}) yaz. console.log("Kancalar kuruldu, durum: " + durum) ile yazdır.
Başlangıç kodu
// test, before ve after'ı içe aktar
// buraya yaz
// durumu tanımla
let durum = "boş";
// before ve after kancalarını ekle
// buraya yaz
// bir test yaz
// buraya yaz
// "Kancalar kuruldu, durum: ..." yazdır
// buraya yazÖrnek çözüm
const { test, before, after } = require("node:test");
let durum = "boş";
before(() => { durum = "hazır"; });
after(() => { durum = "bitti"; });
test("test", () => {});
console.log("Kancalar kuruldu, durum: " + durum);Beklenen çıktı
Kancalar kuruldu, durum: hazır
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 beforeEach ne zaman çalışır?
beforeEach(() => { /* ... */ });- Her testten önce Doğru cevap
- Gruptan önce bir kez
- Her testten sonra
- Yalnızca başarısız testten sonra
Açıklama: beforeEach her testten önce çalışır.
2 Kancayı zamanına eşle
| Kavram | Anlamı |
|---|---|
before |
Gruptan önce bir kez |
after |
Gruptan sonra bir kez |
beforeEach |
Her testten önce |
afterEach |
Her testten sonra |
3 beforeEach çağrısını tamamla
beforeEach(() => { ____ = 0; });
beforeEach(() => { sayaç = 0; });
Açıklama: Her testten önce sayaç sıfırlanır.