בדיקת יחידה של תוספים ל-Chrome

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

אפשר לבדוק כרגיל קוד שנכתב בלי להשתמש בממשקי API של תוספים, באמצעות framework כמו Jest. כדי שיהיה קל יותר לבדוק את הקוד, כדאי להשתמש בטכניקות כמו החדרת תלות שיכולה להסיר יחסי תלות במרחב השמות של Chrome בהטמעה ברמה נמוכה יותר.

אם אתם צריכים לבדוק קוד שכולל ממשקי API של תוספים, כדאי להשתמש בהדמיות.

דוגמה: שימוש בהדמיות עם Jest

יצירת קובץ jest.config.js, שמצהיר על קובץ הגדרה שיפעל לפני כל הבדיקות:

jest.config.js:

module.exports = {
  setupFiles: ['<rootDir>/mock-extension-apis.js']
};

ב-mock-extension-apis.js, מוסיפים הטמעות לפונקציות הספציפיות שרוצים להפעיל:

mock-extension-apis.js:

global.chrome = {
  tabs: {
    query: async () => { throw new Error("Unimplemented.") };
  }
};

לאחר מכן, משתמשים ב-jest.spy כדי לדמות ערך מוחזר בבדיקה:

test("getActiveTabId returns active tab ID", async () => {
  jest.spyOn(chrome.tabs, "query").mockResolvedValue([{
    id: 3,
    active: true,
    currentWindow: true
  }]);
  expect(await getActiveTabId()).toBe(3);
});

השלבים הבאים

כדי להבטיח שהתוסף יפעל כצפוי, מומלץ להוסיף בדיקות מקצה לקצה. למדריך מלא, אפשר לעיין במאמר בדיקת תוספים ל-Chrome באמצעות Puppeteer.