Nock ist eine HTTP-Server-Mocking- und Expectation-Bibliothek für Node.js, die ausgehende Netzwerkaufrufe über http.request abfängt.
Grundlegendes Mocking
const nock = require('nock');
// GET-Endpunkt mocken
const scope = nock('https://api.example.com')
.get('/users/1')
.reply(200, {
id: 1,
name: 'Alice Cooper'
});
// Nicht gemockte Anfragen an das echte Netzwerk durchlassen
const unmockedScope = nock('https://api.example.com', {
allowUnmocked: true
});
Request-Filterung & Query-Matching
Query-Parameter abgleichen
nock('https://api.example.com')
.get('/search')
.query({ q: 'cheese', page: '1' })
.reply(200, { results: [] });
Pfade filtern (dynamische Tokens maskieren)
Dynamische Tokens oder Zeitstempel vor dem Abgleich entfernen:
nock('https://api.example.com')
.filteringPath(/[&?]token=[^&]*/g, '')
.get('/user')
.reply(200, { authorized: true });
// Fängt "/user?token=xyz123" als "/user" ab
POST-Anfragen & Header mocken
nock('https://api.example.com')
.matchHeader('authorization', 'Bearer token_123')
.post('/checkout', { items: [1, 2] })
.reply(201, { status: 'created' }, {
'X-Custom-Header': 'MockValue'
});
Assertions & Bereinigung
// Prüfen, ob alle definierten Interceptoren aufgerufen wurden
scope.isDone(); // => true / false
// Alle aktiven Interceptoren bereinigen
nock.cleanAll();
// Ursprüngliches HTTP-Verhalten von Node.js wiederherstellen
nock.restore();