Saltar al contenido

¿Cómo corregir el error "$ no está definido" cuando la unidad prueba Jquery con Typescript usando Mocha?

Hacemos una verificación exhaustiva cada escrito en nuestra web con la meta de mostrarte siempre la información más veraz y certera.

Solución:

jQuery tiene que estar disponible globalmente porque su script lo obtiene del espacio global. Si modifico tu código para que var $ = require('jquery')(window); se reemplaza por:

global.$ = require('jquery')(window);

entonces funciona Tenga en cuenta las dos llamadas: 1ª para requerir jqueryluego para construirlo pasando window. Alternativamente, podrías hacer:

global.window = window
global.$ = require('jquery');

Si window está disponible globalmente, entonces no hay necesidad de realizar la doble llamada como en el primer fragmento: jQuery solo usa el disponible globalmente window.

Probablemente también quieras definir global.jQuery ya que algunos scripts cuentan con su presencia.

Aquí hay un ejemplo completo de un archivo de prueba que se ejecuta:

/// 
/// 
/// 
/// 

import hello from './dummy';

import chai = require('chai');
var expect = chai.expect;
import jsdom = require('jsdom');
var document = jsdom.jsdom("");
var window = document.defaultView;

global.window = window
global.$ = require('jquery');

describe('TEST NAME', () => 

    it('should run', (done) => 
        hello($('div'));
        done();
    );
);

los typings los archivos se obtienen de la forma habitual utilizando tsd. El archivo ./global.d.ts soluciona el problema que puede tener al establecer nuevos valores en global. Contiene:

declare namespace NodeJS 
    interface Global 
      window: any;
      $: any;
    

dummy.js también fue modificado así:

declare var $: any;

export function hello(element) : void 
    $(element).toggleClass('abc');
;

Primero debe incluir jsdom y jQuery en Node:

npm install jsdom --save-dev
npm install jquery --save-dev

y luego agregue estas líneas en su archivo .js donde está usando jQuery

const jsdom = require("jsdom");
const  JSDOM  = jsdom;
const  window  = new JSDOM(`...`);
var jQuery = require('jquery')(window);

var example = (function($) 
 .....your jQuery code....
)(jQuery);

module.exports = example;

Comentarios y calificaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.