2016-01-20 21 views
6

Sto lottando per ottenere moka, jsdom, moduli es6 con babel per giocare bene con jquery.Come testare il modulo es6 che importa jquery con jsdom

Ecco un modulo

// lib/dom.js 
import $ from 'jquery'; 

const node = (tag)=> $(`<${tag} />`) 

export { 
    node 
} 

Ecco un test

// test/dom.js 
import assert from 'assert'; 
import { node } from '../src/lib/dom'; 

describe('node(tag)',()=> { 
    it('should return a Node',()=> { 
    let img = node('img'); 
    assert(img.nodeName === 'IMG'); 
    }); 
}); 

Ecco il setup jsdom

// test/_setup.js 
var jsdom = require('jsdom'); 

global.document = jsdom.jsdom('<!doctype html><html><body></body></html>'); 
global.window = document.parentWindow; 

Lo script per eseguire

mocha --compilers js:babel-register --recursive 

Di cosa ho bisogno di cambiare per permettere di caricare jsdom jquery in modo che dom.js possibile caricare il modulo jquery senza ottenere l'errore:

Errore: jQuery richiede una finestra con un documento

Ecco il sorgente completo https://github.com/markbrown4/test-simple

risposta

8

Got it, test/_setup.js necessario il seguente:

global.document = require('jsdom').jsdom('<html></html>'); 
global.window = document.defaultView; 
global.$ = require('jquery')(window); 

document.parentWindow è deprecato da jsdom.

+1

Ho provato questo, ma 'global. $' Sembra essere un oggetto invece di una funzione ... qualche idea del perché? – Pensierinmusica