تكرار السؤال: …
الإجابة المختصرة
تعترض المكتبات استدعاءات الشبكة الخارجة (HTTP/HTTPS) على مستوى نواة Node.js وترجع استجابات وهمية مسبقة التحديد دون إجراء اتصالات إنترنت حقيقية.
الشرح
الاعتماد على واجهات خارجية حقيقية في الاختبارات يجعلها بطيئة، وغير مستقرة (Flaky)، ومكلفة. تعمل مكتبات مثل nock على اعتراض دالة http.request الأصلية في Node.js، ومطابقة المسارات والترويسات، وإرجاع استجابة محددة مع اختبار سيناريوهات الانقطاع والـ timeouts بأمان تام.
مثال بالكود
import nock from "nock";
nock("https://api.stripe.com")
.post("/v1/charges")
.reply(200, { id: "ch_123", paid: true });أخطاء شائعة
- نسيان تنظيف الـ Mocks بعد كل اختبار مما يسبب تداخل النتائج بين الاختبارات المتتالية.