我正在尝试安装一个用于测试酶的组件,并出现此错误。
错误:看起来您在没有加载全局文档的情况下调用了 `mount()`
IT技术
reactjs
enzyme
2021-05-07 11:56:48
3个回答
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"
}
我遇到了同样的问题,它对我来说效果很好。
Mocha 不在浏览器环境中运行您的测试,因此没有 DOM。要解决这个问题,只需使用 jsdom npm module来创建 DOM。
来自酶文档:
由于酶的挂载 API 需要 DOM,因此如果您尚未处于浏览器环境(即 Node 环境)中,则需要 JSDOM 才能使用挂载。
JSDOM 是一种基于 JavaScript 的无头浏览器,可用于创建真实的测试环境。
为了获得 Enzyme 的最佳体验,建议您在第一次需要 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了解更多信息
只需将以下内容放在测试文件的顶部
/**
* @jest-environment jsdom
*/
其它你可能感兴趣的问题