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 tester plus facilement le code de cette façon, envisagez d'utiliser des techniques telles que Injection de dépendances, qui permet de supprimer les dépendances sur le 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.") };
  }
};

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. Un tutoriel complet est disponible sur la page Tester les extensions Chrome avec Puppeteer.