Duckrails – Mock the Universe

duckrails - techblog.co.il

בתכנות מונחה עצמים, אובייקטי mock הם אובייקטים מדומים המחקים את התנהגותם של אובייקטים אמיתיים בדרכים מבוקרות, לרוב כחלק מתהליך בדיקות תוכנה. מתכנת יוצר בדרך כלל אובייקט mock כדי לבדוק את התנהגותו של אובייקט אחר, בערך באותו אופן שבו מעצב רכב משתמש בבובה בעת מבחן ריסוק כדי לדמות התנהגות דינמית של אדם בפגיעות רכב. הטכניקה ישימה גם בתכנות גנרי. במדריך זה אסביר אודות ההתקנה והשימוש במערכת duckrails.

שלב א' – התקנת המערכת

duckrails ניתנת להתקנה על לינוקס כפי שניתן לקרוא כאן ובנוסף באמצעות docker. במדריך זה אסביר על ההתקנה באמצעות docker container. אך לפני שנתחיל, יש לוודא כי התקנתם docker + docker compose על פי המדריך הבא.

גם כאן, ישנן שתי אפשרויות התקנה, האחת עם DB של Sqlite והשניה עם Postgres, כאשר ההבדל בניהן, למעט עניין ה DB הוא שבהתקנה עם postgres, יש צורך בקונטיינר נוסף. אוסיף כאן את docker-compose.yaml עבור שתי ההתקנות ותוכלו לבחור במי מהן להשתתמש.

docker-compose.yml עבור התקנה עם Postgres

docker-compose.yml עבור התקנה עם Sqlite

ערכו את קובץ ה docker-compose שלכם והדביקו את קטע הקוד הרלוונטי לכם. בסיום, שמרו את הקובץ והריצו את הפקודה הבאה:

docker-compose up -d

אם ביצעתם הכל כראוי, תוכלו לראות שהמערכת רצה:

duckrails - portainer - techblog.co.il

ותוכלו גם לגשת אליה דרך הדפדפן:

Duckrails - main view

שלב ב' – הוספת / הגדרת Mocks

ובכן, השימוש במערכת ה duckrails הוא די straight forward:

  • צפיה ברשימת כלל ה mocks הקיימים.
  • יצירת mocks חדשים.
  • עריכת mocks קיימים.
  • מחיקת mocks.

על מנת ליצור Mock חדש, לחצו על כפתור ה "Create new mock". כעת תקבלו דף המכיל ארבעה חלקים:

General – הגדרות כלליות של ה Mock

Create new mock - duckrails - general tab

דף זה מכיל את ההגדרות הכלליות עבור ה Mock:

  • Name – שם ה Mock (לתצוגה).
  • Description – מספר מילים המתארים את ה Mock.
  • Method – סוג הפניה (HTTP method) אליו יתאים ה Mock, לדוגמא POST או GET.
  • Status – מציין את תגובת השרת, למשל 200, 301 וכו'.
  • Route path – מציין את נתיב ה Mock, כאשר זה יכול להכיל גם פרמטרים.

Response body – מכיל את גוף התשובה

בחלק זה, נגדיר את גוף התשובה שיחזיר השרת:

  • Body type – סוג התשובה שיחזיר השרת, כאשר:
    * Static -יחזיר תוכן סטטי זהה, קבוע מראש.
    * Embedded ruby – גוף התשובה יהיה דינאמי ויחזיר את התוצאה של ריצת הסקריפט של ruby.
    * Javascript – גם כאן גוף התשובה יהיה דינאמי ויחזיר את תוצאת הריצה של קוד ה Javascript.
  • Content type – כאן נגדיר את סוג התוכן, למשל application/json או application/xml.
  • Body content – תוכן התשובה עצמה, בהתאם לסוג שבחרנו בשדה ה Body type.

Headers

Headers page - techblog.co.il
בחלק זה של ההגדרות, נגדיר את ההדרים (Headers) אותם יחזיר השרת כחלק מהתשובה:
  • add header – לחץ על הקישור להוספת Header חדש.
  • Name – שם ה Header, למשל "Content-Type" או "X-XSS-Protection".
  • Value – תוכן ה Header, למשל "X-XSS-Protection: 1; mode=block".
  • x – הסר את ה Header.

Advanced

Advanced Settings

בחלק זה, נגדיר הגדרות מתקדמות יותר עבור ה Mock, כמו למשל הסקריפט שברצוננו להריץ (דוגמה בהמשך) וכן לשנות ערכים אותם הגדרנו במסכים הקודמים:

  • headers
  • status_code
  • content_type
  • body

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

בדוגמה הנ"ל, נוכל לראות כי הוספנו עיכוב של 5 שניות בתגובה. בנוסף נוכל לראות כי הוספנו שני הדרים בצורה דינמית.

שלב ג' – ביצוע קריאות למערכת

עכשיו, אחרי שהגדרנו את ה Mocks הרצויים, איך אני פונה אליהם? את זה אסביר בחלק זה של המדריך.
נניח שיצרנו Mock המחזיר json סטטי, והנתיב שהגדרנו לו הוא brm/bck (במקרה בדוגמה אני מחזיר רשימת backups שביצעתי לאפליקציה של broadlink ומכן נגזר שם הנתיב.

Broadlink mock

אז על מנת להגיע אליו, עלי להכניס בדפדפן את הכתובת במבנה הבא http://server_ip:port/brm/bck, כפי שתוכלו לראות בדוגמה הבאה:

שימוש מועיל!

Be the first to comment

Leave a Reply

כתובת האימייל שלך לא תפורסם


*