Testen in JavaScript (Node.js): Frameworks und Werkzeuge

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Testen in JavaScript (Node.js): Frameworks und Werkzeuge



Qualitätssicherung durch Tests ist ein wesentlicher Bestandteil der Node.js-Entwicklung. Sie ermöglicht es, Fehler frühzeitig zu erkennen, vereinfacht Refactoring und erhöht die Zuverlässigkeit von Anwendungen. Im JavaScript-Ökosystem gibt es zahlreiche Frameworks und Hilfsprogramme für das Testen. In diesem Artikel betrachten wir die wichtigsten Werkzeuge, ihre Möglichkeiten und geben praktische Beispiele.



1. Grundlegende Testarten

Bevor Sie ein Werkzeug auswählen, ist es wichtig zu verstehen, welche Testarten Sie schreiben werden:

  • Modultests (Unit-Tests) — prüfen einzelne Funktionen oder Module isoliert.
  • Integrationstests — prüfen die Interaktion zwischen mehreren Modulen, einer Datenbank oder externen APIs.
  • End-to-End (E2E) Tests — simulieren Benutzeraktionen im Browser oder in der gesamten Anwendung.


2. Jest — universelles Framework von Facebook

Jest ist das beliebteste Framework zum Testen von JavaScript. Es enthält alles Notwendige: Test-Runner, Assertions-Bibliothek, Mocks und integrierte Unterstützung für Codeabdeckung.



Installation:

npm install --save-dev jest


Beispiel eines einfachen Unit-Tests für eine Additionsfunktion:

// sum.jsfunction sum(a, b) {  return a + b;}module.exports = sum;

// sum.test.jsconst sum = require('./sum');

test('Addition 1 + 2 ergibt 3', () => { expect(sum(1, 2)).toBe(3);});


Tests ausführen:

npx jest


Vorteile von Jest:

  • Null-Konfiguration für React- und Node-Projekte.
  • Automatischer Start im Watch-Modus.
  • Integrierte Mocks und Spione.
  • Unterstützung für asynchronen Code (async/await, Callbacks).


3. Mocha + Chai — flexible Kombination

Mocha ist ein flexibler Test-Runner, der keine Assertions-Bibliothek vorschreibt. Meistens wird er zusammen mit Chai verwendet — einer Bibliothek mit verständlicher Syntax (should, expect, assert).



Installation:

npm install --save-dev mocha chai


Beispiel eines Tests mit Chai:

// calculator.jsfunction divide(a, b) {  if (b === 0) throw new Error('Division durch Null');  return a / b;}module.exports = { divide };

// test.jsconst { expect } = require('chai');const { divide } = require('./calculator');

describe('Taschenrechner', function() { it('sollte zwei Zahlen dividieren', function() { expect(divide(10, 2)).to.equal(5); });

it('sollte einen Fehler werfen bei Division durch Null', function() { expect(() => divide(10, 0)).to.throw('Division durch Null'); });});


Ausführung:

npx mocha test.js


Mocha ist besonders nützlich, wenn eine feine Abstimmung der Berichte und Integration mit anderen Werkzeugen erforderlich ist.



4. Supertest — Testen von HTTP-Servern

Supertest ist eine Bibliothek für Integrationstests von Express- (und anderen) Servern. Sie ermöglicht das Senden von HTTP-Anfragen und das Überprüfen der Antworten.



Installation:

npm install --save-dev supertest


Beispiel eines Tests für eine Express-Anwendung:

// app.jsconst express = require('express');const app = express();app.get('/hello', (req, res) => res.json({ message: 'Hallo Welt' }));module.exports = app;

// app.test.jsconst request = require('supertest');const app = require('./app');

describe('GET /hello', function() { it('antwortet mit json', function(done) { request(app) .get('/hello') .expect('Content-Type', /json/) .expect(200) .then(response => { expect(response.body.message).toBe('Hallo Welt'); done(); }); });});


Supertest lässt sich hervorragend mit Jest oder Mocha kombinieren.

Empfehlungen