我正在尝试用开玩笑的方式为我的 web 组件项目编写测试。我已经使用巴别塔与 es2015预设。我在加载 js 文件时遇到了一个问题。我跟踪了一段代码,其中 document
对象有一个 currentScript
对象。但是在测试环境中,它是 null
。所以我也想嘲笑一下。但是 jest.fn()
在这方面并没有真正的帮助。我该如何处理这个问题?
玩笑开不起来的代码。
var currentScriptElement = document._currentScript || document.currentScript;
var importDoc = currentScriptElement.ownerDocument;
我写的测试用例
import * as Component from './sample-component.js';
describe('component test', function() {
it('check instance', function() {
console.log(Component);
expect(Component).toBeDefined();
});
});
下面是 jest 抛出的错误
Test suite failed to run
TypeError: Cannot read property 'ownerDocument' of null
at src/components/sample-component/sample-component.js:4:39
更新: 根据 Andreas Köberle 的建议,我添加了一些全局变量,并试图模仿如下
__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__
的情况下尝试了上面的代码。