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

اختبار API / متقدم: دليل ذو إصدار ومراجعة / الدرس 14

اختبار الحد بين المستهلك والمزود

فصل بناء طلب المستهلك وتفسير الاستجابة والتحقق لدى المزود.

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

أهداف الدرس

  • شرح سبب عدم إثبات نجاح البديل توافق المزود.
  • تحديد تفاعلات وحالات مزود مركزة دون تثبيت أدوات.

تحديد سوء الفهم عند التكامل

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

فحص تحويل المستهلك الفعلي

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

python فحص تفاعل مستهلك واحد محليا
def title_for(book_id, transport):
    result = transport("GET", "/books/" + book_id)
    return result["title"]

def fake_transport(method, path):
    assert (method, path) == ("GET", "/books/book-4")
    return {"id": "book-4", "title": "Quiet Rivers"}

assert title_for("book-4", fake_transport) == "Quiet Rivers"
print("consumer transformation checked")
الناتج المتوقع
consumer transformation checked

يفحص البرنامج الكامل بناء الطلب لمعرف ثابت مناسب واستخراج الاستجابة. النقل دالة Python لا اتصال HTTP. يحتاج ترميز المعرفات العامة وردود المزود الفعلية إلى دليل إضافي.

تحديد حالة المزود بصورة مستقلة

يحتاج التفاعل حالة مزود مضبوطة مثل وجود book-4 بعنوان عام. تنشأ الحالة بآلية بيانات معتمدة عند التحقق لدى المزود، لا باستنتاجها من بيئة مشتركة متغيرة. يسجل المثال غير التنفيذي التفاعل بتنسيق مخصص عمدا؛ وهو وثيقة مراجعة لا صيغة Pact صالحة. طابق الحقول التي يعتمد عليها المستهلك مع القيود الضرورية كعلاقات المعرفات والأنواع. تجعل الأوقات الدقيقة والحقول غير المهمة العقد هشا دون حماية سلوك المستهلك.

json سجل مراجعة تفاعل بتنسيق مخصص
{"artifactFormat":"classroom-interaction-v1","consumer":"reading-panel","provider":"public-catalog","providerState":"book-4-exists","request":{"method":"GET","path":"/books/book-4"},"responseNeeds":{"status":200,"requiredFields":["id","title"],"id":"book-4","titleType":"string"}}

هذا JSON ليس مواصفة Pact عمدا. يوثق توقع مستهلك وافتراض حالة مزود واحدين. لا يشغل وسيطا أو خادما وهميا أو مدقق مزود ولا ينشر شيئا.

ربط الدليل بالإصدارات المشاركة

يحدد تحقق المزود بناءه وإصدار عقد المستهلك المفحوص. لا يثبت نجاح ملف تفاعل قديم التوافق مع مستهلك تغير حديثا. أظهر إصدارات المستهلك المدعومة وافتراضات البيئة في قرار الإصدار. تنظم الأداة الدليل لكنها لا تختار سياسة الدعم التنظيمية تلقائيا. تترك فحوص العقد توجيه النشر والثقة الشبكية وإعداد التشغيل وبعض سلوك البيانات لاختبارات أخرى. افصل الحدود الباقية عن ادعاء توافق الرسائل.

جمع دليل العقد والدليل الوظيفي

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

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

يخفي بديل متساهل مسارا خاطئا

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

يوافق نجاح عقد قديم مستهلكا جديدا

لماذا يحدث؟
لا يرتبط الدليل بإصدارات الملفات.
كيف تصلحه؟
اربط النتائج بعقد المستهلك وبناء المزود الدقيقين.
كيف تتجنب تكراره؟
احتفظ بسجل توافق ذي إصدارات للمستهلكين المدعومين.

تدعي اختبارات العقد صحة التخزين

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

اختبر فهمك

1. يستخدم العميل id وtitle فقط. هل يجمد العقد كل حقول المزود؟

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

عادة لا. حدد الحقول والعلاقات اللازمة للمستهلك والطلب والأخطاء المهمة. يخلق تجميد الحقول غير المستخدمة ارتباطا غير ضروري. يغطي مخطط المزود واختباراته وعوده الأوسع دون تحويل التفاعل إلى مواصفة كاملة.

2. ينجح المستهلك مع النقل المحقون. ما المجهول؟

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

قدرة المزود المدعوم على إنتاج الرد للحالة المحددة وصحة إعداد النقل وربط النشر. سجل نتيجة العميل المحلية منفصلة ثم احصل على تحقق المزود ودليل تكامل مصرح به لتلك الحدود.

أهم ما تعلمته

  • يثبت نجاح البديل افتراض المستهلك لا اتفاق المزود.
  • تجعل حالات المزود وإصدارات الملفات التفاعل قابلا للإعادة.
  • يحتاج توافق الرسائل وصحة العمل تأكيدين منفصلين.

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