我正在努力让mocha,jsdom,es6模块与babel一起玩
jquery.
这是一个模块
// lib/dom.js import $from 'jquery'; const node = (tag)=> $(`<${tag} />`) export { node }
这是一个测试
// 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'); }); });
这是jsdom的设置
// test/_setup.js var jsdom = require('jsdom'); global.document = jsdom.jsdom('<!doctype html><html><body></body></html>'); global.window = document.parentWindow;
要运行的脚本
mocha --compilers js:babel-register --recursive
我需要更改以允许jsdom加载jquery,以便dom.js可以加载jquery模块而不会收到错误:
错误:jQuery需要一个带文档的窗口
解决方法
知道了,test / _setup.js需要以下内容:
global.document = require('jsdom').jsdom('<html></html>'); global.window = document.defaultView; global.$= require('jquery')(window);
document.parentWindow已从jsdom弃用.