用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转换为对象。
document
是window
的属性,而不是相反:
const dom = new JSDOM('<!DOCTYPE html><html><head></head><body></body></html>'); global.window = dom.window; global.document = dom.window.document;