我试图使用sinon的模拟和间谍来测试Redux组件和异步操作,但是一旦我将sinon导入到任何测试文件中,运行以下npm脚本:
mocha需要测试/帮助/浏览.js-编译器。:babel-core/寄存器-opts test/client/**/*.{js,jsx} --递归测试/客户端
我得到以下错误:
var div = typeof document !== "undefined" && document.createElement("div");
^.../node_modules/sinon/lib/sinon/util/core/deep-equal.js:3:55中的TypeError: document.createElement不是一个函数
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:不能将未定义或null转换为对象。
发布于 2017-05-14 14:13:17
document是window的一个属性,而不是反过来:
const dom = new JSDOM('<!DOCTYPE html><html><head></head><body></body></html>');
global.window = dom.window;
global.document = dom.window.document;https://stackoverflow.com/questions/43960608
复制相似问题