Búsqueda de sitios web

typescript - Problema con Jest durante las pruebas unitarias - getContext() no está implementado


Cuando ejecuté mis pruebas unitarias encontré que obtengo el siguiente error:

Error: Not implemented: HTMLCanvasElement.prototype.getContext 
(without installing the canvas npm package)

Respuesta #1

Para resolver este problema, primero es necesario instalar jest-canvas-mock; puedes usar yarn o npm.

yarn add -D jest-canvas-mock

Y luego agrega esto en tu jest.config.js o en la sección de configuración de jest dentro del package.json.

setupFiles: [
    'jest-canvas-mock',
    '<rootDir>/config/jest/setupFiles'
  ]

Respuesta #2

la RESPUESTA a esta pregunta me ayudó a solucionar el problema con conocimientos mínimos. Escribí esta respuesta sobre cómo resolví el problema usando la documentación oficial DOC

El Package.json que tengo es el siguiente

 "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "test:unit": "vue-cli-service test:unit --watch",
    "test:e2e": "vue-cli-service test:e2e",
    "lint": "vue-cli-service lint"
  },

bajo la carpeta de proyectos, tengo otra carpeta llamada tests donde escribo pruebas end2end y pruebas unitarias. en esa carpeta de tests, creé un archivo llamado setup.js donde importo los módulos necesarios de la siguiente manera

import Vue from "vue";
import Vuetify from "vuetify";
import axios from "axios";
import globalVariables from "../src/helper/globalVariables";
import globalFunctions from "../src/helper/globalFunctions";
Vue.use(Vuetify);
Vue.config.productionTip = false;
Vue.prototype.$http = axios;
Vue.prototype.$gv = globalVariables;
Vue.prototype.$gf = globalFunctions;

Dentro de la carpeta de mi proyecto, tengo un archivo llamado jest.config.js donde configuré el archivo setup.js para probar las unidades. El archivo jest.config.js posee los siguientes códigos

module.exports = {
  preset: "@vue/cli-plugin-unit-jest",
  verbose: true,
  reporters: [
    "default",
    [
      "./node_modules/jest-html-reporter",
      {
        pageTitle: "VGC Unit Test",
      },
    ],
  ],
  setupFiles: ["jest-canvas-mock", "./tests/setup.js"],
};

incluye la siguiente línea de código dentro de tu jest.config.js y define la ruta de tu archivo setup.js

setupFiles: ["jest-canvas-mock", "./tests/setup.js"]

esto resolverá el problema Error: No implementado: HTMLCanvasElement.prototype.getContext (sin instalar el paquete npm canvas)