用Mocha设置JSDOM

我试图用sinon的模拟和间谍来testingRedux组件和asynchronous操作,但是一旦我将Sinon导入任何testing文件,运行下面的npm脚本:

mocha – 需要testing/ helpers / browser.js –compilers。:babel-core / register –opts test / client / ** / *。{js,jsx} – recursiontesting/客户端

我得到以下错误:

var div = typeof document !== "undefined" && document.createElement("div"); ^ 

TypeError:document.createElement不是… / node_modules / sinon / lib / sinon / util / core / deep-equal.js中的函数:3:55

browser.js是我设置JSDOM的地方:

 import { JSDOM } from 'jsdom'; const doc = new JSDOM('<!DOCTYPE html><html><head></head><body></body></html>'); cost win = doc.defaultView; // tried doc.window; global.document = doc; global.window = win; /* Object.keys(win).forEach(property => { if (typeof global[property] === 'undefined') { global[property] = win[property]; } }); */ global.navigator = { userAgent: 'node.js' }; 

我想我没有正确设置jsdom? 我尝试了四处浏览,并在上面的browser.js文件中find了注释代码,但是在取消注释时会产生错误:

 Object.keys(win).forEach(function (property) { ^ 

TypeError:无法将undefined或null转换为对象。

documentwindow的属性,而不是相反:

 const dom = new JSDOM('<!DOCTYPE html><html><head></head><body></body></html>'); global.window = dom.window; global.document = dom.window.document;