Eenheid testen van Chrome-extensies

Met unit-tests kunnen kleine delen van de code afzonderlijk van de rest van uw extensie en buiten de browser worden getest. U kunt bijvoorbeeld een eenheidstest schrijven om ervoor te zorgen dat een helpermethode een waarde correct naar de opslag schrijft.

Code die is geschreven zonder gebruik te maken van extensie-API's kan op de normale manier worden getest met behulp van een raamwerk zoals Jest . Om het testen van code op deze manier eenvoudiger te maken, kunt u overwegen om technieken als afhankelijkheidsinjectie te gebruiken, die kunnen helpen bij het verwijderen van afhankelijkheden van de Chrome-naamruimte in uw implementatie op een lager niveau.

Als u code wilt testen die extensie-API's bevat, kunt u overwegen om mocks te gebruiken.

Voorbeeld: Mocks gebruiken met Jest

Maak een jest.config.js bestand, waarin een installatiebestand wordt gedeclareerd dat vóór alle tests wordt uitgevoerd:

jest.config.js:

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

Voeg in mock-extension-apis.js implementaties toe voor de specifieke functies die u verwacht aan te roepen:

mock-extensie-apis.js:

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

Gebruik vervolgens jest.spy om een ​​retourwaarde in een test te bespotten:

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

Volgende stappen

Om ervoor te zorgen dat uw extensie naar verwachting functioneert, raden we u aan end-to-end-tests toe te voegen. Zie Chrome-extensies testen met Puppeteer voor een volledige tutorial.