Test delle estensioni di Chrome per test delle unità

I test di unità consentono di testare piccole sezioni di codice isolate dal resto dell'estensione e al di fuori del browser. Ad esempio, potresti scrivere un test di unità per assicurarti che un metodo di assistenza scriva correttamente un valore nella memoria.

Il codice scritto senza utilizzare le API di estensione può essere testato normalmente, utilizzando un framework come Jest. Per semplificare il test del codice in questo modo, ti consigliamo di utilizzare tecniche come la iniezione di dipendenze, che può aiutarti a rimuovere le dipendenze dall'ambito di Chrome nell'implementazione di livello inferiore.

Se devi testare il codice che include API di estensioni, valuta la possibilità di utilizzare i mock.

Esempio: utilizzo di mock con Jest

Crea un file jest.config.js che dichiari un file di configurazione da eseguire prima di tutti i test:

jest.config.js:

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

In mock-extension-apis.js, aggiungi le implementazioni per le funzioni specifiche che prevedi di chiamare:

mock-extension-apis.js:

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

Quindi, utilizza jest.spy per simulare un valore restituito in 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);
});

Passaggi successivi

Per assicurarti che l'estensione funzioni come previsto, ti consigliamo di aggiungere test end-to-end. Per un tutorial completo, consulta Testare le estensioni di Chrome con Puppeteer.