כאן מוסבר איך ליצור stub של הטמעות אמיתיות של לקוחות כדי להחדיר mock לבדיקות יחידה. שימוש בלקוח מדומה עם Google Cloud ספריות הלקוח של Rust מאפשר לכם לכתוב בדיקות יחידה מהימנות ומבוקרות שלא מבצעות קריאות לרשת ולא גוררות חיובים.
תלויות
יש כמה מסגרות עבודה ל-mocking שזמינות ל-Rust. במדריך הזה נעשה שימוש ב-mockall. מוסיפים אותו כתלות בפיתוח:
cargo add --dev mockall
בנוסף, במדריך הזה נעשה שימוש בלקוח Speech כדי להקל על ההבנה של הדוגמאות (אבל המושגים האלה רלוונטיים לכל הלקוחות).
מוסיפים את יחסי התלות הנדרשים לקובץ Cargo.toml:
cargo add google-cloud-speech-v2 google-cloud-lro
יצירת מוקאפ של לקוח
כדי לבדוק את הקוד באמצעות לקוח מדומה, מגדירים מבנה מדומה, קובעים את ההתנהגות הצפויה שלו לתרחיש הבדיקה, ואז מחדירים את המבנה המדומה ללוגיקה של האפליקציה. הדוגמה הבאה ממחישה את תהליך העבודה הזה.
קודם מוסיפים הצהרות use כדי לפשט את הקוד:
נניח שלאפליקציה יש פונקציה שמשתמשת בלקוח Speech כדי לקרוא ל-GetRecognizer, להגדיר את השדה name של הבקשה ולעבד את תגובת השרת.
אתם יכולים לבדוק איך האפליקציה מטפלת בתגובות שונות מהשירות.
בשלב הבא, מגדירים את מבנה הנתונים המדומה. המבנה הזה מטמיע את המאפיין speech::stub::Speech.
יוצרים מופע של ה-mock. שימו לב שמאקרו mockall::mock! מוסיף את הקידומת Mock לשם של המבנה שהוגדר קודם.
הגדרת ציפיות לגבי המבחן המדומה. לדוגמה, אפשר לצפות שהקוד יקרא ל-GetRecognizer עם שם מסוים וידמה תגובה מוצלחת מהשירות.
יוצרים לקוח Speech באמצעות ה-mock:
מפעילים את הפונקציה:
מאמתים את התוצאות:
סימולציה של שגיאות
סימולציית שגיאות דומה לסימולציית הצלחות. כדי לדמות שגיאה, משנים את התוצאה שמוחזרת על ידי ה-mock.
ללקוח שנבנה באמצעות from_stub() אין לולאת ניסיון חוזר פנימית, והוא מחזיר את כל השגיאות מה-stub ישירות לאפליקציה.
השלבים הבאים
כדי לראות את הקוד המלא מהמדריך הזה, אפשר לעיין בקובץ המקור במאגר google-cloud-rust ב-GitHub.