Настройка JSDOM с Mocha

Я пытаюсь использовать макет и шпион Синона для тестирования компонентов Redux и асинхронных действий, но как только я импортирую Синон в любой тестовый файл, Запускаю следующий сценарий npm:

mocha --требуется тест / помощники / браузер.Яш --компиляторы .: babel-core / register --opts test / client/**/*.{js, jsx} --рекурсивный тест / клиент

Я получаю следующую ошибку:

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

ошибку TypeError: документ.createElement не является функцией .../ node_modules / sinon/lib/sinon/util/core / deep-equal.js: 3: 55

браузер.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 правильно настроен? Я попытался оглядеться и нашел комментированный код в браузере.выше JS файл, но он выдает ошибку при отсутствие комментариев:

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

TypeError: невозможно преобразовать undefined или null в object.

1 ответов


document является собственностью window, а не наоборот:

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

global.window = dom.window;
global.document = dom.window.document;