Node.js'de Supertest ile HTTP API Testi Nasıl Yapılır?

Oliver Kingsley

Oliver Kingsley

14 August 2025

Node.js'de Supertest ile HTTP API Testi Nasıl Yapılır?

Kurumsal Apidog

Şirket İçi Dağıtım

SSO & RBAC

SOC 2 Uyumlu

Apidog Enterprise'ı Keşfet

Hızla gelişen API ortamında, ekiplerin iki şeye ihtiyacı vardır: kod düzeyinde hızlı geri bildirim ve ortamlar arası güvenilir, uçtan uca doğrulama. Supertest ilkini sunar: Node.js hizmetleri için ışık hızında HTTP onayları. Ve roller arası işbirliği yapmaya, senaryo testleri çalıştırmaya, bağımlılıkları taklit etmeye ve dokümantasyon yayınlamaya hazır olduğunuzda, Apidog gibi bir API test platformu tabloyu tamamlar. Bu resmi, objektif kılavuz, API'leri test etmek için Supertest'in nasıl kullanılacağını, nerede öne çıktığını ve güvenle teslimatı hızlandırmak için Apidog ile nasıl eşleştirileceğini açıklar.

Profesyonel İpucu: Supertest kontrollerinizi Apidog ile üretime hazır kalite kapılarına dönüştürün. API spesifikasyonları tasarlayın, uç noktaları otomatik olarak taklit edin, görsel onaylar oluşturun, CI çalıştırın ve API belgeleri yayınlayın—hepsi tek bir yerde.
button

Supertest Nedir?

Supertest, HTTP sunucularını test etmek için hafif bir Node.js kütüphanesidir. superagent üzerine kuruludur ve harici istemcileri çalıştırmadan durum kodlarına, başlıklara ve yanıt gövdelerine karşı anlamlı onaylar yazmanızı sağlar. Şunlar için idealdir:

İşbirliğine, API uyumluluk yönetimine, ortam orkestrasyonuna ve görsel testlere ihtiyacınız olduğunda, Supertest'i Apidog gibi bir API test platformuyla tamamlayacaksınız. Bu makalenin geri kalanı her ikisini de nasıl yapacağınızı gösteriyor.

button

Supertest'i Kurma ve Ayarlama

Supertest'i dakikalar içinde kurabilirsiniz. npm, pnpm veya yarn kullanın:

# npm   npm install --save-dev supertest jest

# pnpm  pnpm add -D supertest jest

# yarn

yarn add -D supertest jest

Minimal bir Express API'si (app.js):

const express = require('express');

const app = express();



app.get('/greet', (req, res) => {

  const name = req.query.name || 'World';

  res.json({ message: `Hello, ${name}!` });

});



module.exports = app;

Supertest + Jest kullanarak basit bir test (app.test.js):

const request = require('supertest');

const app = require('./app');



describe('GET /greet', () => {

  it('greets anonymously', async () => {

    const res = await request(app)

      .get('/greet')

      .expect('Content-Type', /json/)

      .expect(200);



    expect(res.body.message).toBe('Hello, World!');

  });



  it('greets by name', async () => {

    const res = await request(app)

      .get('/greet?name=Alice')

      .expect('Content-Type', /json/)

      .expect(200);



    expect(res.body.message).toBe('Hello, Alice!');

  });

});

Testleri çalıştırmak için package.json'ı güncelleyin:

{

  "scripts": {

    "test": "jest"

  }

}

Testlerinizi çalıştırın:

npm test

Mocha veya Vitest'i tercih ediyorsanız, Supertest aynı şekilde çalışır—`.expect()` API'si aynıdır.


Harika Supertest Onayları Yazma

Supertest'in gücü, hızlı yazılabilen ve kolay okunabilen zincirlenebilir onaylarından gelir. İşte her gün kullanacağınız kalıplar:

request(app)

  .get('/users')

  .expect(200)

  .expect('Content-Type', /json/);
request(app)

  .get('/users')

  .expect(200)

  .expect(res => {

    if (!Array.isArray(res.body)) throw new Error('Expected an array');

    if (res.body.length === 0) throw new Error('Expected at least one user');

  });
request(app)

  .get('/health')

  .expect(200)

  .expect({ status: 'ok' });



request(app)

  .get('/health')

  .expect(200)

  .expect(/"status":"ok"/);
request(app)

  .post('/posts')

  .set('Authorization', 'Bearer test-token')

  .send({ title: 'Hello', body: 'World' })

  .expect(201)

  .expect(res => {

    if (!res.body.id) throw new Error('Missing id');

  });
const agent = request.agent(app);

await agent.get('/login').expect(200);

await agent.get('/me').expect(200).expect(res => {

  if (!res.body.user) throw new Error('Expected authenticated user');

});
İpucu: Testleri küçük ve deterministik tutun. Supertest, kontrolcüleri, ara yazılımları ve adaptörleri izole bir şekilde doğrulamada üstündür.

CI/CD ve Monorepolarda Supertest

Kaliteyi tutarlı tutmak için her çekme isteği için CI'da Supertest'i çalıştırın. Tipik bir kurulum:

Örnek GitHub Actions kodu parçası:

name: api-tests

on: [push, pull_request]

jobs:

  test:

    runs-on: ubuntu-latest

    steps:

      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4

        with:

          node-version: '20'

      - run: npm ci

      - run: npm test -- --ci

Monorepolarda, yalnızca etkilenen testleri çalıştırın ve geri bildirim döngülerini hızlandırmak için `node_modules`'i önbelleğe alın. Supertest'in minimal yükü, onu büyük kod tabanları için harika bir uyum sağlar.


Bir API Test Platformu Ne Zaman Kullanılmalı?

Supertest, hızlı, kod düzeyinde geri bildirim için mükemmeldir. Ancak üretim gerçekleri daha fazlasını gerektirir:

Apidog gibi bir API test platformunun parladığı yer burasıdır. Ekipleri uyumlu tutmak ve kalite kapılarınızı dayanıklı kılmak için API tasarımını, taklit etmeyi, test etmeyi, hata ayıklamayı ve dokümantasyonu birleştirir.

button
Apidog Testing UI

Apidog Neden Supertest'i Tamamlar?


Birleşik Bir İş Akışı: Supertest + Apidog

Geliştirici odaklı kontroller için Supertest'i, uçtan uca işbirliği için ise Apidog'u kullanın. İşte sorumlulukların pragmatik bir ayrımı:

Görev
Supertest
Apidog
Kontrolcü/ara yazılım birim kontrolleri
Mükemmel
Tamamlayıcı
Hızlı sözleşme regresyonları (durum/başlıklar)
Mükemmel
Mükemmel
Şema yönetimi (OpenAPI)
Manuel
Birinci sınıf
Ön uç için taklit sunucular
Sınırlı
Yerleşik
Veri odaklı senaryolar
Sınırlı
Birinci sınıf
Ortamlar arası CI orkestrasyonu
İyi
Birinci sınıf
Ekip işbirliği/belgeler
Minimal
Birinci sınıf

Örnek iş akışı:


Gelişmiş Supertest Kalıpları

İşe yarayacak birkaç ek ipucu:


Sonuç: API Kalitesine Dengeli Bir Yaklaşım

Kaliteli API'ler hem hız hem de titizlikle inşa edilir. Supertest, geliştiricilere koda yakın uç noktaları doğrulamak için hızlı, anlamlı bir yol sunar—sıkı geri bildirim döngüleri ve regresyonları bir daldan kaçmadan yakalamak için mükemmeldir. Basit, güvenilir ve birçok Node.js arka ucunda kanıtlanmıştır.

Ancak sistemler büyüdükçe işbirliğine, sözleşme yönetimine ve ortam farkındalıklı yürütmeye ihtiyacınız olur. İşte Apidog – entegre bir API test platformu – iş akışınızı yükseltir. Sözleşme tasarımını (OpenAPI), taklit sunucuları, görsel onayları, ortam değişkenlerini ve CI orkestrasyonunu birleştirerek, Apidog, ekiplerin fikirden teslimata kadar uyumlu bir şekilde ilerlemesine yardımcı olur. Ön uç, arka uç ve QA aynı doğruluk kaynağını paylaşabilirken, Supertest hızlı, deterministik onaylarla kod yollarınızı korumaya devam eder.

Kendinden emin bir hız istiyorsanız, her ikisini de kullanın:

Bu dengeli yaklaşım, yalnızca bugün doğru olan değil, ürününüz geliştikçe dayanıklı kalan API'ler ortaya çıkarır. Supertest kontrollerinizi şimdi yazmaya başlayın ve Apidog ile onları üretime hazır bir işlem hattında hayata geçirin.

button

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin