Testing de aplicaciones que usan Mapea - sigcorporativo-ja/Mapea4 GitHub Wiki

Debido a la distribución de Mapea como un único script sin exportación de módulos (ver: Mapea-con-ES-Modules), a la hora de realizar test unitarios o de integración, podemos encontrarnos con alguna complicación para que el test runner tenga acceso a Mapea y no de error al no encontrar cualquier método u objeto que cuelgue de M.

Para ello, vamos a detallar la configuración necesaria para realizar dichos test con una de las librerías más extendidas: Jest

Testing con Jest

Lo primero a tener en cuenta es que no dispondremos de un DOM real, por lo que Jest usará JSDOM para construir nuestra aplicación. JSDOM no tiene soporte directo de canvas, así que será necesario instalar esta dependencia, además del propio jest y otras necesarias según el proyecto (babel, etc.) en nuestra aplicación:

npm install --save-dev canvas

Acto seguido, debemos indicarle a Jest que utilice un script para importar Mapea y que tenga acceso global. Usamos la opción de configuración setupFiles, según indica la documentación de Jest:

jest.config.js

module.exports = {
  roots: ['<rootDir>/src'],
  transform: {
    '\\.(js|jsx)?$': 'babel-jest',
  },
  testPathIgnorePatterns: ['/node_modules/', '/lib/', '/build/'],
  setupFiles: ['<rootDir>/jest-globals.js'],
}

El contenido de jest-globals.js será el siguiente:

import './lib/mapea/mapea-5.1.0.ol.min'
import './lib/mapea/configuration-5.1.0'
global.M = M

De esta forma de indicamos a Jest que, para todos sus test, tenga disponible en M toda la funcionalidad de Mapea

⚠️ **GitHub.com Fallback** ⚠️