Supertest
- Node.js kursu
- İleri seviye
- Ders 74/83
- 5 dk
supertest ile HTTP test öğrenirsin.
Supertest
Supertest, Express uygulamalarını gerçek HTTP isteği atmadan test etmeyi sağlayan bir kütüphanedir. Uygulamayı bellekte çağırır; gerçek bir kapı (port) açmaz. Bu, testleri hızlı ve izole yapar.
Örnek: const request = require("supertest"); const app = require("./app"); request(app).get("/users").expect(200);. Bu, app'e bellekte bir GET /users isteği atar ve yanıtın 200 olmasını bekler. Supertest, Express'in app.listen'ini atlar; bunun yerine http.createServer(app)'i doğrudan çağırır. Bu yüzden testler için app.listen kodu çağrılmaz. Supertest, zincir yapısıyla okunaklı testler yazmayı sağlar: request(app).get("/").expect(200).expect("Content-Type", /json/).
Zincir test yapısı
Supertest'in gücü, zincir (chain) yapısındadır. request(app).get(yol).expect(status) tek bir satırda hem isteği atar hem yanıtın durumunu doğrular. Birden çok .expect de zincirlenebilir.
Örnek: request(app).post("/users").send({ name: "Ayşe" }).expect(201).expect("Content-Type", /json/);. Bu, POST /users isteğini { name: "Ayşe" } gövdesiyle atar; yanıtın 201 olmasını ve JSON içerik türünü bekler. .send gövde, .expect doğrulama yapar. Zincir, testin okunaklılığını artırır. Bir testte birden çok doğrulama zincirlenirse hepsi geçmeli; biri bile başarısız olursa test başarısız olur. Bu yüzden her test tek bir davranışa odaklanmalıdır.
Uygulama supertest ile GET testi yaz
supertest modülünü require ile içe aktar. app'i require("./app") ile içe aktar. const request = require("supertest") sonrası console.log ile "supertest hazır" yaz.
Başlangıç kodu
// supertest ve app içe aktar
// buraya yaz
// "supertest hazır" yazdır
// buraya yazÖrnek çözüm
const request = require("supertest");
const app = require("./app");
console.log("supertest hazır");Beklenen çıktı
supertest hazır
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 request çağrısını tamamla
const request = require(____);
const request = require("supertest");
Açıklama: supertest modülü "supertest" adıyla yüklenir.
2 Metodu rolüne eşle
| Kavram | Anlamı |
|---|---|
request(app) |
İstek başlatır |
.get/.post |
HTTP metodunu belirler |
.send |
Gövde ekler |
.expect |
Doğrulama yapar |
3 Supertest neden gerçek bir port açmaz?
request(app).get('/users')- Çünkü test yavaş olur
- Çünkü Express çalışmaz
- Çünkü app.listen'i atlar
- Çünkü app'i bellekte çağırır Doğru cevap
Açıklama: Supertest app'i bellekte çağırır.