CodeBlanks Logo Icon CodeBlanks

Before ve after

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

index.js
// 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

index.js
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?

index.js
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

Soru
beforeEach(() => { ____ = 0; });
Cevap
beforeEach(() => { sayaç = 0; });

Açıklama: Her testten önce sayaç sıfırlanır.

Orta seviye bölümündeki tüm dersler