محتويات الدورة

Express.js / المتوسط: الوحدات والهوية والموائمات / الدرس 12

اختبار السياسات والموائمات وعقود المسارات

اختر اختباراً يثبت الحد المقصود ولا تخلط مراقبة استدعاء رد وهمي بدمج HTTP فعلي.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • افصل فحص المجال النقي واختبار المعالج واختبار السلسلة المركبة.
  • أكد الهوية والآثار والتنظيف والشكل العام بعينات حتمية.

اختبر الحد الذي يمكن أن يفشل فعلاً

يثبت اختبار المحقق النقي قرارات إدخال محلية لا تشغيل express.json قبل المسار. وتثبت مراقبة رد وهمي استدعاءاته لا تسلسل الترويسات أو إسقاط الجسم الحقيقي. يختبر تركيب التطبيق التوجيه والوسائط ويضيف النقل سلوك HTTP. اختر أصغر اختبار مفيد لكل خطر وصرح بحده. اجعل الخدمات قابلة للحقن حتى تعمل عينات السياسة دون قاعدة. لا تشغل خادم المشروع أو خدمة مضبوطة لاختبار إسقاط أو محلل معرف حتمي، فذلك يوسع الأثر دون إضافة دليل مناسب للقرار المحلي.

اشتق الحالات من معنى العنوان

اختبر لقراءة مقرر مستأجر السجل المرئي والغائب والممنوع بالمعرف نفسه، وشكل استعلام خاطئاً وفشل المصدر. وللكتابة أضف مخالفة بلا استدعاء كتابة ونسخة قديمة ورداً غير مؤكد بعد الحفظ. يحتاج ملف الجلسة انتهاء وخروجاً، والتنزيل فقداً وفشلاً متأخراً. تختلف الحالات لاختلاف العقود. لا تنسخ قائمة حالات HTTP عامة لكل عنوان: فلا يثبت 403 أن الكتابة الممنوعة لم تقع، ولا يثبت 200 أن السجل يخص المستأجر الصحيح. اختر تأكيداً يربط الرد بأثر المجال وهوية البيانات.

أثبت أن الرفض يسبق الأثر المحمي

يستخدم الاختبار المحلي مراقب خدمة محقوناً وموائماً صغيراً للسياسة. تتلقى الهوية غير المؤهلة منعاً ويبقى المراقب بلا استدعاء، وتستدعي المسموحة بحثاً واحداً بالمستأجر المتوقع. هذا JavaScript عادي لا اختبار وسيط Express. فائدته جعل أسبقية السياسة لوصول المصدر قاعدة صريحة. يحفظ اختبار المسار الحقيقي القاعدة ويضيف ترتيب المحلل والمطابقة وتمرير الخطأ وعقد الرد للسلسلة. لا تتحول الدالة إلى اختبار خادم لمجرد تشابه أسماء وسيطاتها مع أسماء يستعملها التطبيق.

javascript اختبار محلي كامل لأسبقية السياسة
function readCard(principal,tenant,service) {
  if (principal.tenantId !== tenant) return {code:"DENIED"};
  return service.find(tenant);
}
const calls=[];
const service={find:tenant => {calls.push(tenant); return {id:"c1"};}};
console.assert(readCard({tenantId:"lab-b"},"lab-a",service).code === "DENIED");
console.assert(calls.length === 0);
console.assert(readCard({tenantId:"lab-a"},"lab-a",service).id === "c1");
console.assert(JSON.stringify(calls) === '["lab-a"]');

لا يصل الممنوع للمصدر ويسجل المسموح lab-a مرة. لا يشارك إطار أو مستمع HTTP.

احفظ دليل الدمج كملفات صريحة

تسمي عينة JSON سلوكاً متوقعاً لاختبار تركيب حقيقي دون ادعاء تشغيله. ينبغي أن تتحول الصفوف إلى تأكيدات على الإخراج العام وآثار المجال المعنية. لا تضع اعتمادات حقيقية أو بيانات عملاء في العينات. ثبت الساعة والهويات الاصطناعية حيث يؤثر الزمن والنطاق ونظف الموارد المؤقتة التي يملكها الاختبار. يحلل المقرر JSON ويشغل نماذج نقية فقط؛ فلا يثبت حزمة اختبار HTTP أو يفتح مستمعاً أو يجرب مصدراً مضبوطاً. يسهل سجل واضح مراجعة ما بقي من دليل قبل استعمال التطبيق فعلياً.

json سجل اصطناعي لعينات الدمج
{"route":"GET /tenants/:tenantId/courses/:courseId","cases":[{"name":"denied-tenant","expect":"safe-denial-and-no-source-call"},{"name":"visible-course","expect":"exact-public-card"},{"name":"source-failure","expect":"safe-error-and-cleanup"}],"execution":"not-performed-as-http-integration"}

يسجل متطلبات التأكيد لا فحوص HTTP مكتملة. يمكن فحص صياغته دون خادم.

اجعل تقرير الاختبار مفيداً للمراجع التالي

سجل المشغل وأسماء النماذج وعدد العينات والدمج غير المنفذ. لا تثبت الصياغة التوجيه ولا يثبت send وهمي تطبيق ملف الارتباط في المتصفح. كرر الأوسع عند تغيير أو خطر غير محسوم يبرره. عند الفشل اختزله لعينة حتمية قبل زيادة المهلة أو الإعادة، ليظل التشخيص مرتبطاً بالعقد المعطل. استخدم أدوات المشروع المعتمدة المثبتة في دمج لاحق، ولا تجلب حزمة غير مراجعة لمجرد ادعاء سطح اختبار أكبر. يتيح التقرير الصادق للآخر اتخاذ خطوة مناسبة بدلاً من افتراض ضمان لم يختبر.

الأخطاء الشائعة وإصلاحها

يسمى اختبار رد وهمي اختبار HTTP كاملاً

لماذا يحدث؟
تجاهل التقرير ما يحذفه البديل.
كيف تصلحه؟
سم أدلة المعالج والتركيب والنقل منفصلة.
كيف تتجنب تكراره؟
صرح بالحدود غير المنفذة بجانب النتائج.

يأتي رد المنع بعد كتابة غير مفوضة

لماذا يحدث؟
فحصت التأكيدات الحالة لا الأثر.
كيف تصلحه؟
أكد عدم استدعاء الخدمة المحمية.
كيف تتجنب تكراره؟
استخدم مراقب مصدر لفروع الرفض.

تفشل اختبارات الوقت بشكل متذبذب

لماذا يحدث؟
اعتمدت العينات النوم وحالة حية.
كيف تصلحه؟
احقن ساعة ثابتة ومصادر حتمية.
كيف تتجنب تكراره؟
افصل توقيت النقل عن قرار محلي.

اختبر فهمك

1. لماذا تؤكد هوية السجل بجانب 200؟

اعرض الحل المشروح

قد ترافق الحالة الناجحة سجل مستأجر خاطئ أو إسقاطاً عرضياً. أكد المعرف والحقول المسموحة ثم اختبر هوية ممنوعة بالمعرف المطلوب نفسه. يختبر ذلك العزل والشكل لا مجرد إرسال فرع لرد.

2. ماذا يقول التقرير إذا اختبرت دوال نقية وJSON فقط؟

اعرض الحل المشروح

يسمي النماذج والمشغل والعينات ثم يصرح بعدم اختبار المطابقة والوسائط والترويسات والمستمع والمصادر. هذا دليل ضيق مفيد، ويصبح مضللاً فقط إذا وصف كفحص كامل للواجهة أو النشر.

أهم ما تعلمته

  • تغطي التأكيدات المفيدة الهوية والآثار والشكل العام.
  • يجب أن يطابق ادعاء الاختبار الحد المنفذ فعلاً.

المراجع الرسمية