Referência rápida

Folha de Cola Mocking HTTP com Nock

Guia rápido para o Nock: biblioteca de simulação de servidor HTTP e expectativas para Node.js, filtragem de URL, correspondência de query e respostas simuladas.

· Publicado

Nock é uma biblioteca de mocking de servidor HTTP e expectativas para Node.js que intercepta chamadas de rede de saída via http.request.

Mocking Básico

const nock = require('nock');

// Simular um endpoint GET
const scope = nock('https://api.example.com')
  .get('/users/1')
  .reply(200, {
    id: 1,
    name: 'Alice Cooper'
  });

// Permitir que requisições não simuladas sigam para a rede real
const unmockedScope = nock('https://api.example.com', {
  allowUnmocked: true
});

Filtragem de Requisições & Correspondência de Query

Correspondência de Parâmetros de Query

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

Filtragem de Caminhos (Mascarando Tokens Dinâmicos)

Remova tokens dinâmicos ou timestamps antes da comparação:

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

// Intercepta "/user?token=xyz123" como "/user"

Simulando Requisições POST & Cabeçalhos

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

Asserções & Limpeza

// Verificar se todos os interceptadores declarados foram chamados
scope.isDone(); // => true / false

// Limpar todos os interceptadores ativos
nock.cleanAll();

// Restaurar o comportamento HTTP original do Node.js
nock.restore();

Referências

Temas relacionados