פרק 17: מאת טובי הואנג בסן פרנסיסקו, קליפורניה (ינואר 2021)
הפרקים הקודמים
בדיקות דפדפן הן סוג של בדיקה אוטומטית של קוד כרום, שכוללת יותר מקצה לקצה מאשר בדיקות יחידה. בדיקות דפדפן יוצרות מכונות דפדפן ובודקות רכיבים שונים בממשק המשתמש, במקום לבדוק פונקציונליות טהורה של קלט/פלט כמו שבדיקות יחידה מבצעות. בדיקות אוטומטיות משולבות חשובות להדמיית חוויית המשתמש מקצה לקצה. כשכותבים בדיקת דפדפן, לעיתים קרובות כדאי לבצע פעולות הגדרה באמצעות תכנות שהמשתמש יכול לבצע באופן ידני. כדי לעזור לכם לעשות זאת, מיקסים הם חבילת כלים לביצוע הגדרת בדיקות דפדפן לא טריוויאליות באופן שניתן לעשות בו שימוש חוזר.
דוגמאות למיקסים שימושיים:
GuestUserMixin
לבדיקת מצב פרטיUserPolicyMixin
עבור לעג למדיניות משתמש מהשרתFakeGaiaMixin
על תגובות של לעג משרת Gaia
אתם יכולים ליצור מיקסים משלכם כדי לשרת מגוון רחב של מטרות!
קטע הקוד שבהמשך מתחבר כמשתמש אורח לבדיקה. חשוב לוודא שהתכונה פועלת במצב פרטי.
class MyGuestBrowserTestClass : public MixinBasedInProcessBrowserTest { private: GuestSessionMixin guest_session_mixin_{&mixin_host_}; };
באמצעות LoggedInUserMixin
אפשר להתחבר בקלות בתור משתמש Family Link לבדיקה. אם התכונה שלכם משפיעה על משהו שקשור לפיקוח על ילדים, כדאי לבדוק את התכונה עבור משתמשים בפיקוח. באג אפשרי הוא לשכוח שמשתמשים קטינים השביתו את המצב הפרטי או שהם לא יכולים להתקין תוספים בלי אישור מההורים. LoggedInUserMixin
הוא תערובת מורכבת של תערובות אחרות.
class MyChildBrowserTestClass : public MixinBasedInProcessBrowserTest { protected: void SetUpOnMainThread() override { MixinBasedInProcessBrowserTest::SetUpOnMainThread(); logged_in_user_mixin_.LogInUser(); } private: LoggedInUserMixin logged_in_user_mixin_{&mixin_host_, LoggedInUserMixin::LogInType::kChild, embedded_test_server(), this}; };
אחד היתרונות המרכזיים של מיקסים הוא שימוש בקומפוזיציה במקום בירושה, ומניעת בעיות בהורשה של כמה יהלומים.
ירושה של יותר מסיווג בסיס אחד לבדיקה מובילה לבעיה ברמת היהלום, אבל אפשר לשלב ולהתאים מיקסים תוך כדי מניעת הבעיה. השימוש במיקסים לא מבטל לחלוטין את הירושה, כי מחלקת הבדיקה של הדפדפן עדיין צריכה לרשת מ-MixinBasedInProcessBrowserTest
, אבל למרבה המזל, מחלקת הבסיס היא לשימוש כללי וקל מאוד.