Lou*_*iro 12
Mocha不会在浏览器环境中运行您的测试,因此没有DOM.要解决此问题,只需使用jsdom npm模块来创建DOM.
来自Enzyme docs:
由于酶的mount API需要DOM,因此如果您尚未在浏览器环境(即Node环境)中使用mount,则需要使用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'
};
Run Code Online (Sandbox Code Playgroud)
阅读酶文档 - JSDOM获取更多信息
npm install --save-dev --save-exact jsdom jsdom-global
Run Code Online (Sandbox Code Playgroud)
然后:
import 'jsdom-global/register'; //at the top of file, even before importing React
Run Code Online (Sandbox Code Playgroud)
更多信息在这里。
替代方案:如果您在开玩笑地将酵素与
在您的中package.json,指定用于笑话的测试环境,jsdom如下所示:
"jest": {
"testEnvironment": "jsdom"
}
Run Code Online (Sandbox Code Playgroud)
我遇到了同样的问题,对我来说效果很好。