Настройка 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;