Szybka pomoc

Ściągawka mockowania HTTP w Nock

Szybki przewodnik dla Nock: biblioteka do mockowania serwera HTTP w Node.js, filtrowanie adresów URL, dopasowywanie zapytań oraz odpowiedzi testowe.

· Opublikowano

Nock to biblioteka do mockowania serwerów HTTP i oczekiwań dla Node.js, przechwytująca wychodzące wywołania sieciowe przez http.request.

Podstawowe mockowanie

const nock = require('nock');

// Zamockuj punkt końcowy GET
const scope = nock('https://api.example.com')
  .get('/users/1')
  .reply(200, {
    id: 1,
    name: 'Alice Cooper'
  });

// Przepuszczaj niezamockowane żądania do prawdziwej sieci
const unmockedScope = nock('https://api.example.com', {
  allowUnmocked: true
});

Filtrowanie żądań i dopasowanie parametrów query

Dopasowywanie parametrów query

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

Filtrowanie ścieżek (maskowanie dynamicznych tokenów)

Usuń dynamiczne tokeny lub znaczniki czasu przed dopasowaniem:

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

// Przechwytuje "/user?token=xyz123" jako "/user"

Mockowanie żądań POST i nagłówków

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

Asercje i czyszczenie

// Sprawdź, czy wszystkie zadeklarowane przechwytywacze zostały wywołane
scope.isDone(); // => true / false

// Wyczyść wszystkie aktywne przechwytywacze
nock.cleanAll();

// Przywróć oryginalne zachowanie HTTP w Node.js
nock.restore();

Źródła

Powiązane tematy