2017-05-14 82 views
4

我试图使用兴农的模拟和间谍测试终极版组件和异步行动,但只要我导入兴农到任何测试文件,运行以下NPM脚本:设置JSDOM与摩卡

mocha --require test/helpers/browser.js --compilers .:babel-core/register --opts test/client/**/*.{js,jsx} --recursive test/client

我得到以下错误:

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

TypeError: document.createElement is not a function at .../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注释代码文件之上,但它产生的错误,当去掉注释:

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

TypeError: Cannot convert undefined or null to object.

回答

13

documentwindow一个属性,而不是倒过来:

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

global.window = dom.window; 
global.document = dom.window.document; 
+1

谢谢,这个修好了! – mythereal