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 l'espace de stockage.

Le code écrit sans utiliser d'API d'extension peut être testé normalement, à l'aide d'un framework tel que Jest. Pour tester plus facilement le 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 de l'espace de noms Chrome dans votre mise en œuvre 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 souhaitez appeler:

mock-extension-apis.js:

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

Ensuite, utilisez 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 votre extension fonctionne comme prévu, nous vous recommandons d'ajouter des tests de bout en bout. Consultez Tester les extensions Chrome avec Puppeteer pour suivre un tutoriel complet.