Я в шутку пытаюсь писать тесты для своих проектов веб-компонентов. Я уже использую babel с пресетом es2015. У меня проблема при загрузке файла js. Я следил за фрагментом кода, в котором объект document
имеет объект currentScript
. Но в тестовом контексте это null
. Так что я подумывал поиздеваться над тем же. Но jest.fn()
на самом деле не помогает. Как я могу справиться с этой проблемой?
Кусок кода, в котором шутка терпит неудачу.
var currentScriptElement = document._currentScript || document.currentScript;
var importDoc = currentScriptElement.ownerDocument;
Я написал тестовый пример. component.test.js
import * as Component from './sample-component.js';
describe('component test', function() {
it('check instance', function() {
console.log(Component);
expect(Component).toBeDefined();
});
});
Ниже приведена ошибка, вызванная шуткой.
Test suite failed to run
TypeError: Cannot read property 'ownerDocument' of null
at src/components/sample-component/sample-component.js:4:39
Обновление: согласно предложению Андреаса Кёберле, я добавил несколько глобальных переменных и попытался издеваться над следующим
__DEV__.document.currentScript = document._currentScript = {
ownerDocument: ''
};
__DEV__.window = {
document: __DEV__.document
}
__DEV__.document.registerElement = jest.fn();
import * as Component from './arc-sample-component.js';
describe('component test', function() {
it('check instance', function() {
console.log(Component);
expect(Component).toBeDefined();
});
});
Но не повезло
Обновление. Я пробовал приведенный выше код без __dev__
. Также, установив документ как global.
global.document
? - person Pavithra Kodmad   schedule 13.12.2016const jsdom = require('jsdom'); const documentHTML = '<!doctype html><html><body><div id="root"></div></body></html>'; global.document = jsdom.jsdom(documentHTML);
И после этого я добавляю все, что хочу, к документу и его доступному в моих тестах. - person Pavithra Kodmad   schedule 15.12.2016