Prueba de unidades de extensiones de Chrome

La prueba de unidades permite probar pequeñas secciones de código de forma aislada del resto de la extensión y fuera del navegador. Por ejemplo, puedes escribir una prueba de unidades para asegurarte de que un método auxiliar escriba de forma correcta un valor en el almacenamiento.

El código escrito sin usar las APIs de extensión se puede probar con normalidad, con un framework como Jest. Para facilitar la prueba del código de esta manera, considera usar técnicas como la inserción de dependencias, que puede ayudar a quitar dependencias del espacio de nombres de Chrome en tu implementación de nivel inferior.

Si necesitas probar un código que incluya APIs de extensión, considera usar simulaciones.

Ejemplo: Usa simulaciones con Jest

Crea un archivo jest.config.js, que declare un archivo de configuración que se ejecutará antes de todas las pruebas:

jest.config.js:

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

En mock-extension-apis.js, agrega implementaciones para las funciones específicas que esperas llamar:

mock-extension-apis.js:

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

Luego, usa jest.spy para simular un valor que se muestra en una prueba:

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

Próximos pasos

Para asegurarte de que las extensiones funcionen como se espera, te recomendamos agregar pruebas de extremo a extremo. Consulta Prueba las extensiones de Chrome con Puppeteer para obtener un instructivo completo.