我正在尝试安装一个组件来测试酶,并得到这个错误。
问问题
19564 次
3 回答
20
npm install --save-dev --save-exact jsdom jsdom-global
然后:
import 'jsdom-global/register'; //at the top of file, even before importing React
更多信息在这里。
替代方案:如果您使用酶开玩笑-
在您的package.json
中,为 jest 指定测试环境,jsdom
如下所示:
"jest": {
"testEnvironment": "jsdom"
}
我遇到了同样的问题,它对我来说效果很好。
于 2017-08-02T12:23:13.023 回答
14
Mocha 不在浏览器环境中运行您的测试,因此没有 DOM。要解决此问题,您只需使用 jsdom npm 模块创建 DOM。
来自酶文档:
由于酶的挂载 API 需要 DOM,如果您还没有处于浏览器环境(即 Node 环境)中,则需要 JSDOM 才能使用挂载。
JSDOM 是一个基于 JavaScript 的无头浏览器,可用于创建真实的测试环境。
为了获得最佳的酶体验,建议您在第一次需要 React 之前将文档加载到全局范围中。在运行 React 的代码之前运行以下脚本非常重要。
因此,像下面这样的独立脚本通常是一种好方法:
/* setup.js */
var jsdom = require('jsdom').jsdom;
var exposedProperties = ['window', 'navigator', 'document'];
global.document = jsdom('');
global.window = document.defaultView;
Object.keys(document.defaultView).forEach((property) => {
if (typeof global[property] === 'undefined') {
exposedProperties.push(property);
global[property] = document.defaultView[property];
}
});
global.navigator = {
userAgent: 'node.js'
};
阅读酶文档 - JSDOM了解更多信息
于 2016-05-10T08:21:21.613 回答
4
只需将以下内容放在测试文件的顶部
/**
* @jest-environment jsdom
*/
于 2017-09-12T10:30:07.253 回答