Supertest verwenden: HTTP APIs in Node.js testen

Oliver Kingsley

Oliver Kingsley

14 August 2025

Supertest verwenden: HTTP APIs in Node.js testen

In der sich schnell entwickelnden API-Landschaft benötigen Teams zwei Dinge: schnelles Feedback auf Code-Ebene und eine vertrauenswürdige, durchgängige Validierung über verschiedene Umgebungen hinweg. Supertest liefert Ersteres – blitzschnelle HTTP-Assertions für Node.js-Dienste. Und wenn Sie bereit sind, rollenübergreifend zusammenzuarbeiten, Szenariotests durchzuführen, Abhängigkeiten zu simulieren und Dokumentationen zu veröffentlichen, vervollständigt eine API-Testplattform wie Apidog das Bild. Dieser offizielle, objektive Leitfaden erklärt, wie man Supertest zum Testen von APIs verwendet, wo es seine Stärken hat und wie man es mit Apidog kombiniert, um die Bereitstellung mit Zuversicht zu beschleunigen.

Apidog
Button

Was ist Supertest?

Supertest ist eine leichtgewichtige Node.js-Bibliothek zum Testen von HTTP-Servern. Es basiert auf superagent und ermöglicht Ihnen, ausdrucksstarke Assertions für Statuscodes, Header und Antwortkörper zu schreiben – ohne externe Clients zu starten. Es ist ideal, wenn Sie:

Wenn Sie Zusammenarbeit, API-Konformitäts-Governance, Umgebungs-Orchestrierung und visuelles Testen benötigen, ergänzen Sie Supertest mit einer API-Testplattform wie Apidog. Der Rest dieses Artikels zeigt, wie beides geht.

Button

Supertest installieren und einrichten

Sie können Supertest in wenigen Minuten installieren. Verwenden Sie npm, pnpm oder yarn:

# npm   npm install --save-dev supertest jest

# pnpm  pnpm add -D supertest jest

# yarn

yarn add -D supertest jest

Eine minimale Express-API (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;

Ein einfacher Test (app.test.js) mit Supertest + Jest:

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!');

  });

});

Aktualisieren Sie package.json, um Tests auszuführen:

{

  "scripts": {

    "test": "jest"

  }

}

Führen Sie Ihre Tests aus:

npm test

Wenn Sie Mocha oder Vitest bevorzugen, funktioniert Supertest genauso – die .expect() API ist identisch.


Hervorragende Supertest-Assertions schreiben

Die Stärke von Supertest liegt in seinen verkettbaren Assertions – schnell zu schreiben und leicht zu lesen. Hier sind Muster, die Sie täglich verwenden werden:

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');

});
Tipp: Halten Sie Tests klein und deterministisch. Supertest eignet sich hervorragend zur Validierung von Controllern, Middleware und Adaptern in Isolation.

Supertest in CI/CD und Monorepos

Um eine gleichbleibende Qualität zu gewährleisten, führen Sie Supertest in CI für jeden Pull Request aus. Ein typisches Setup:

Beispiel GitHub Actions Snippet:

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

In Monorepos führen Sie nur betroffene Tests aus und cachen node_modules, um Feedbackschleifen zu beschleunigen. Der minimale Overhead von Supertest macht es zu einer hervorragenden Wahl für große Codebasen.


Wann eine API-Testplattform verwendet werden sollte

Supertest ist hervorragend für schnelles Feedback auf Code-Ebene geeignet. Aber die Produktionsrealität erfordert mehr:

Hier glänzt eine API-Testplattform wie Apidog. Sie vereint API-Design, Mocking, Testen, Debugging und Dokumentation, um Teams aufeinander abzustimmen und Ihre Qualitätstore dauerhaft zu machen.

Button
Apidog Test-Benutzeroberfläche

Warum Apidog Supertest ergänzt


Ein kombinierter Workflow: Supertest + Apidog

Verwenden Sie Supertest für entwicklerzentrierte Prüfungen und Apidog für die End-to-End-Zusammenarbeit. Hier ist eine pragmatische Aufteilung der Verantwortlichkeiten:

Aufgabe
Supertest
Apidog
Controller-/Middleware-Unit-Prüfungen
Exzellent
Komplementär
Schnelle Vertragsregressionen (Status/Header)
Exzellent
Exzellent
Schema-Governance (OpenAPI)
Manuell
Erstklassig
Mock-Server für Frontend
Begrenzt
Integriert
Datengesteuerte Szenarien
Begrenzt
Erstklassig
CI-Orchestrierung über Umgebungen hinweg
Gut
Erstklassig
Teamzusammenarbeit/Dokumentation
Minimal
Erstklassig

Beispiel-Workflow:


Fortgeschrittene Supertest-Muster

Einige zusätzliche Tipps, die sich auszahlen:


Fazit: Ein ausgewogener Ansatz für API-Qualität

Qualitative APIs werden sowohl mit Geschwindigkeit als auch mit Strenge gebaut. Supertest bietet Entwicklern eine schnelle, ausdrucksstarke Möglichkeit, Endpunkte nah am Code zu überprüfen – perfekt für enge Feedbackschleifen und das Abfangen von Regressionen, bevor sie einen Branch verlassen. Es ist einfach, zuverlässig und in vielen Node.js-Backends kampferprobt.

Wenn Systeme jedoch wachsen, benötigen Sie Zusammenarbeit, Vertrags-Governance und umgebungsbewusste Ausführung. Hier hebt Apidog – eine integrierte API-Testplattform – Ihren Workflow auf ein neues Niveau. Durch die Vereinheitlichung von Vertragsdesign (OpenAPI), Mock-Servern, visuellen Assertions, Umgebungsvariablen und CI-Orchestrierung hilft Apidog Teams, vom Konzept bis zur Auslieferung synchron zu arbeiten. Frontend, Backend und QA können dieselbe Informationsquelle nutzen, während Supertest Ihre Codepfade weiterhin mit schnellen, deterministischen Assertions schützt.

Wenn Sie eine sichere Geschwindigkeit wünschen, verwenden Sie beides:

Dieser ausgewogene Ansatz führt zu APIs, die heute nicht nur korrekt, sondern auch widerstandsfähig sind, wenn sich Ihr Produkt weiterentwickelt. Beginnen Sie jetzt mit dem Schreiben Ihrer Supertest-Prüfungen – und erwecken Sie sie in einer produktionsreifen Pipeline mit Apidog zum Leben.

Button

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen