Γρήγορη αναφορά

Σκονάκι Προσομοίωσης HTTP Nock

Γρήγορος οδηγός αναφοράς για το Nock: βιβλιοθήκη HTTP mocking για Node.js, φιλτράρισμα URL, ταίριασμα query και mock αποκρίσεις.

· Δημοσιεύτηκε

Το Nock είναι μια βιβλιοθήκη προσομοίωσης (mocking) και προσδοκιών διακομιστή HTTP για το Node.js, που παρεμβαίνει στις εξερχόμενες κλήσεις δικτύου μέσω http.request.

Βασικό Mocking

const nock = require('nock');

// Προσομοίωση endpoint GET
const scope = nock('https://api.example.com')
  .get('/users/1')
  .reply(200, {
    id: 1,
    name: 'Alice Cooper'
  });

// Επίτρεψε στα μη-προσομοιωμένα αιτήματα να περάσουν στο πραγματικό δίκτυο
const unmockedScope = nock('https://api.example.com', {
  allowUnmocked: true
});

Φιλτράρισμα Αιτημάτων & Ταίριασμα Query

Ταίριασμα Παραμέτρων Query

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

Φιλτράρισμα Διαδρομών (Απόκρυψη Δυναμικών Tokens)

Αφαιρέστε δυναμικά tokens ή χρονοσφραγίδες πριν από το ταίριασμα:

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

// Παρεμβαίνει στο "/user?token=xyz123" ως "/user"

Προσομοίωση Αιτημάτων POST & Κεφαλίδων

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

Επαληθεύσεις & Καθαρισμός

// Επιβεβαίωση ότι κλήθηκαν όλοι οι δηλωμένοι παρεμβολείς (interceptors)
scope.isDone(); // => true / false

// Καθαρισμός όλων των ενεργών παρεμβολέων
nock.cleanAll();

// Επαναφορά αρχικής συμπεριφοράς HTTP του Node.js
nock.restore();

Αναφορές

Σχετικά θέματα