مرجع سريع

ورقة غش محاكاة HTTP باستخدام Nock

دليل مرجعي سريع لمكتبة Nock: محاكاة خوادم HTTP وتوقعات الطلبات في Node.js، تصفية المسارات، مطابقة الاستعلام والردود الوهمية.

· تاريخ النشر

Nock هي مكتبة لمحاكاة خوادم HTTP والتحقق من التوقعات في Node.js، حيث تعترض طلبات الشبكة الصادرة عبر http.request.

المحاكاة الأساسية

const nock = require('nock');

// محاكاة نقطة نهاية 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 Parameters)

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

تصفية المسارات (إخفاء الرموز الديناميكية)

أزل الرموز الديناميكية أو الطوابع الزمنية قبل المطابقة:

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'
  });

التأكيدات والتنظيف

// التحقق من استدعاء جميع المعترضات المعلنة
scope.isDone(); // => true / false

// تنظيف جميع المعترضات النشطة
nock.cleanAll();

// استعادة سلوك HTTP الأصلي في Node.js
nock.restore();

المراجع

موضوعات ذات صلة