2017-09-27 6 views
0

Il existe des questions similaires, mais il ne semble pas y avoir de réponse définitive et la plupart des réponses sont anciennes et obsolètes. C'est pourquoi je demande cela.Mocha Modules de test dont jQuery est une dépendance

J'ai donc un test comme celui-ci

// B2CPopup_methods_test.js 
import './domTestsHelper' 
import { expect } from 'chai' 
import newB2CPopup from './popupFromDbBoilerplate' 

describe('B2CPopup class method - ',() => { 
    const popup = newB2CPopup 

    it('prependHTMLToDOM prepends html to dom',() => { 
    popup.prependHTMLToDOM() 
    expect($('.b2cPopupOverlay')).to.exist 
    }) 
}) 

et mon domTestsHelper.js ressemble à ceci

import jquery from 'jquery' 
import jsdom from 'jsdom' 
import chai from 'chai' 
import chaiJquery from 'chai-jquery' 

// Set up testing environment to run like a browser in the command line 
const { JSDOM } = jsdom 
const { window } = new JSDOM('<!doctype html><html><body></body></html>') 
const $ = jquery(window) 

chaiJquery(chai, chai.util, $) 

export { $ } 

Enfin, le fichier que je teste est

// B2CPopup.js 
import $ from 'jquery' 

export default class B2CPopup { 
    constructor ({ _id, options }, html) { 
    this._id = _id 
    this.options = options 
    this.html = html 
    } 

    start =() => {} 
    createOptions =() => {} 
    prependHTMLToDOM =() => $(this.html).prependTo('body') 

    show =() => {} 
} 

Et bien sûr, mon test échoue avec cette erreur

Error: jQuery requires a window with a document 

Répondre

0

Dans mes domTestsHelper.js j'ajouté ces lignes

global.window = window 
global.document = window.document 
global.$ = $ 

Mon fichier final ressemble à ceci

import jquery from 'jquery' 
import jsdom from 'jsdom' 
import chai from 'chai' 
import chaiJquery from 'chai-jquery' 

// Set up testing environment to run like a browser in the command line 
const { JSDOM } = jsdom 
const { window } = new JSDOM('<!doctype html><html><body></body></html>') 
const $ = jquery(window) 

global.window = window 
global.document = window.document 
global.$ = $ 

chaiJquery(chai, chai.util, $)