בדיקה של התגובה לפעולה מאתר אחר (webhook)

כשאתם מפתחים את התגובה לפעולה מאתר אחר (webhook), כדאי לבדוק אותה בעזרת עסקים אמיתיים מטענים ייעודיים (payloads) של Messages. במקום ליצור בדיקות באופן ידני, אפשר להשתמש מסגרת בדיקה של Messages לבדיקת ה-webhook עם סוגים שונים של מטען ייעודי (payload) של JSON שהתגובה לפעולה מאתר אחר (webhook) עשויה לקבל בסביבת הייצור.

כדי להתחיל, כל מה שצריך הוא כתובת URL מופע פעיל של ה-webhook. קל להתקין את מסגרת הבדיקה, אפשר לבדוק את ה-webhook באמצעות פקודה אחת.

תחילת העבודה

התקנת ה-framework

הדרך הקלה ביותר להתקין את ה-framework היא באמצעות מנהל החבילות של NPM. ה-framework מתפרסם במרשם של חבילות NPM, כך שאפשר להתקין אותו. עם npm:

npm install -g bm-test-framework

הרצת הבדיקות

כשהחבילה מותקנת, אפשר לציין את ה-webhook URL כסביבה ומריצים את כל הבדיקות באמצעות הפקודה הבאה:

BMTF_ENDPOINT_URL=<Your webhook URL> bm-test-framework

התוצאות של מסגרת הבדיקה נראות כך:

  Sending payloads to <Your webhook URL>
      ✔ authentication-request.json should return 200
      ✔ event-receive.json should return 200
      ✔ image-message.json should return 200 (862ms)
      ✔ read-receipt.json should return 200
      ✔ suggestion-message.json should return 200
      ✔ text-message.json should return 200 (134ms)
      ✔ text-with-dialogflow-response.json should return 200 (128ms)
      ✔ user-receipt.json should return 200

בהרצת הבדיקה לדוגמה הזו, כל מקרי הבדיקה עברו בהצלחה.

אם התגובה לפעולה מאתר אחר (webhook) נכשלת באחד ממקרי הבדיקה, המשמעות היא שהתגובה לא מגיבים באמצעות 200 OK למטען הייעודי (payload) של ה-JSON של אותו תרחיש. במקרה כזה, הבדיקה framework מדפיסה מידע על השגיאות כדי לעזור לכם לנפות באגים. לצפייה מסגרת בדיקה README לקבל מידע נוסף על מקרי בדיקה ספציפיים.

שימוש ב-framework בפרויקט NodeJS

להשתמש ב-framework מתוך הקוד שלכם בפרויקט NodeJS, או בתוך חבילת בדיקה של Mocha, יש להתקין תחילה את החבילה כפיתוח של תלות:

npm install --save-dev bm-test-framework

אחרי ההתקנה, אפשר ליצור אובייקט BmTestFramework כדי לנהל את הבדיקות:

const BmTestFramework = require('bm-test-framework');
const bmTestFramework = new BmTestFramework({endpointURL: <Your webhook URL>});

מערך החבר payloads מכיל את כל מקרי הבדיקה. אפשר להשתמש sendPayload כדי להריץ בדיקה ספציפית. לדוגמה, הקוד הבא מפעיל את הבדיקה הראשונה ב-framework:

bmTestFramework.sendPayload(bmTestFramework.payloads[0])

הגדרת הבדיקות

בנוסף למשתנה הסביבה BMTF_ENDPOINT_URL הנדרש, אתם יכולים גם להגדיר גם משתני סביבה אופציונליים כדי להתאים אישית את התנהגות הבדיקה:

משתנה הסביבה שם שדה ההגדרה סוג תיאור
BMTF_RANDOM_UUID randomUuid בוליאני אם הערך הוא True, מזהה השיחה מוגדר כ-UUID אקראי עם פורמט חוקי. אם False, כל מזהי השיחה מוגדרים כ-"CONVERSATION-ID".
BMTF_TIMEOUT פסק זמן מספר או מחרוזת זמן מעוצבת מגדיר את הזמן הקצוב לתפוגה באלפיות שנייה עבור כל מקרה בדיקה. הזמן הקצוב לתפוגה שמוגדר כברירת מחדל הוא 2,000 אלפיות השנייה לכל תרחיש בדיקה. בחומר העזר בנושא API של Mocha ניתן למצוא מפרטים מפורטים של סוג ועיצוב.

לדוגמה, הקוד הבא מריץ את מסגרת הבדיקה משורת הפקודה עם אפשרות UUID אקראית מופעלת והזמן הקצוב שלו לתפוגה הוא 1,000 אלפיות שנייה:

BMTF_ENDPOINT_URL=<Your webhook URL> BMTF_TIMEOUT=1000 BMTF_RANDOM_UUID=true bm-test-framework

כדי להתאים אישית את התנהגות הבדיקה בפרויקט NodeJS, אפשר גם להעביר את אותם משתנים באובייקט config כשיוצרים את BmTestFramework:

const bmTestFramework = new BmTestFramework({endpointURL: <Your webhook URL>, randomUuid: true, timeout: 1000});