设置JSDOM与摩卡
问题描述:
我试图使用兴农的模拟和间谍测试终极版组件和异步行动,但只要我导入兴农到任何测试文件,运行以下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.
答
document
是window
一个属性,而不是倒过来:
const dom = new JSDOM('<!DOCTYPE html><html><head></head><body></body></html>');
global.window = dom.window;
global.document = dom.window.document;
谢谢,这个修好了! – mythereal