Tests unitaires des extensions Chrome

Les tests unitaires permettent de tester de petites sections de code indépendamment du reste de votre extension et en dehors du navigateur. Par exemple, vous pouvez écrire un test unitaire pour vous assurer qu'une méthode d'assistance écrit correctement une valeur dans le stockage.

Le code écrit sans utiliser d'API d'extension peut être testé normalement, à l'aide d'un framework tel que Jest. Pour faciliter le test du code de cette manière, envisagez d'utiliser des techniques telles que l'injection de dépendances, qui peuvent vous aider à supprimer les dépendances sur l'espace de noms Chrome dans votre implémentation de niveau inférieur.

Si vous devez tester du code qui inclut des API d'extension, envisagez d'utiliser des simulations.

Exemple : Utiliser des simulations avec Jest

Créez un fichier jest.config.js, qui déclare un fichier de configuration qui s'exécutera avant tous les tests :

jest.config.js:

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

Dans mock-extension-apis.js, ajoutez des implémentations pour les fonctions spécifiques que vous prévoyez d'appeler :

mock-extension-apis.js:

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

Utilisez ensuite jest.spy pour simuler une valeur renvoyée dans un test :

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

Étapes suivantes

Pour vous assurer que vos fonctions d'extension fonctionnent comme prévu, nous vous recommandons d'ajouter des tests de bout en bout. Pour obtenir un tutoriel complet, consultez Tester des extensions Chrome avec Puppeteer.