Référence rapide

Aide-mémoire Mocking HTTP Nock

Guide rapide pour Nock : bibliothèque de simulation HTTP pour Node.js, filtrage d’URL, correspondance de query et réponses simulées.

· Publié le

Nock est une bibliothèque de simulation et d’assertions de serveur HTTP pour Node.js qui intercepte les appels réseau sortants via http.request.

Simulation de base (Mocking)

const nock = require('nock');

// Simuler un point de terminaison GET
const scope = nock('https://api.example.com')
  .get('/users/1')
  .reply(200, {
    id: 1,
    name: 'Alice Cooper'
  });

// Laisser passer les requêtes non simulées vers le réseau réel
const unmockedScope = nock('https://api.example.com', {
  allowUnmocked: true
});

Filtrage des requêtes et paramètres Query

Correspondance des paramètres de requête

nock('https://api.example.com')
  .get('/search')
  .query({ q: 'cheese', page: '1' })
  .reply(200, { results: [] });

Filtrage des chemins (masquer les jetons dynamiques)

Retirez les jetons dynamiques ou horodatages avant la comparaison :

nock('https://api.example.com')
  .filteringPath(/[&?]token=[^&]*/g, '')
  .get('/user')
  .reply(200, { authorized: true });

// Intercepte "/user?token=xyz123" comme "/user"

Simuler des requêtes POST et des en-têtes

nock('https://api.example.com')
  .matchHeader('authorization', 'Bearer token_123')
  .post('/checkout', { items: [1, 2] })
  .reply(201, { status: 'created' }, {
    'X-Custom-Header': 'MockValue'
  });

Assertions et nettoyage

// Vérifier que tous les intercepteurs déclarés ont été appelés
scope.isDone(); // => true / false

// Nettoyer tous les intercepteurs actifs
nock.cleanAll();

// Restaurer le comportement HTTP natif de Node.js
nock.restore();

Références

Sujets associés