我如何用玩笑配置jsdom
How do I configure jsdom with jest
我已将 jest 和 jsdom 安装到我的 React 项目中,但我在导入使用 window.localStorage
变量的 React 组件时遇到问题。我已经为 jsdom 添加了一个我认为可以解决问题的安装文件。
这是我的设置:
package.json
中的开玩笑配置
"jest": {
"verbose": true,
"testEnvironment": "jsdom",
"testURL": "http://localhost:8080/Dashboard/index.html",
"transform": {
"^.+\.js$": "<rootDir>/node_modules/babel-jest",
"^.+\.jsx$": "<rootDir>/node_modules/babel-jest"
},
"unmockedModulePathPatterns": [
"node_modules/react/",
],
"moduleFileExtensions": [
"js",
"jsx",
"json",
"es6"
]
}
setup.js
import jsdom from 'jsdom';
const DEFAULT_HTML = '<html><body></body></html>';
global.document = jsdom.jsdom(DEFAULT_HTML);
global.window = document.defaultView;
global.navigator = window.navigator;
global.localStorage = window.localStorage;
test.js
'use strict';
import setup from './setup';
import React from 'react';
import jsdom from 'jsdom';
import Reportlet from '../components/Reportlet.jsx';
it('Ensures the react component renders', () => {
});
我的 reportlet 组件使用了 localStorage 变量但是大喊:
Cannot read property getItem of undefined
当我调用 localStorage.getItem(<some item>)
我读到 here that jest comes shipped with jsdom but I am not sure if I need the extra jsdom dependency or not. I also read here 第一次需要 react 之前需要加载 jsdom。
有谁知道如何正确配置jest和jsdom?
jsdom 不支持localStorage。看起来您可以像 'node-localstorage' 这样使用 node-friendly 存根。请参阅评论底部 https://github.com/tmpvar/jsdom/issues/1137
...或者你可以用 https://github.com/letsrock-today/mock-local-storage
之类的东西来模拟它
...或者像这里看到的那样滚动你自己的模拟:How to mock localStorage in JavaScript unit tests?
我已将 jest 和 jsdom 安装到我的 React 项目中,但我在导入使用 window.localStorage
变量的 React 组件时遇到问题。我已经为 jsdom 添加了一个我认为可以解决问题的安装文件。
这是我的设置:
package.json
中的开玩笑配置"jest": {
"verbose": true,
"testEnvironment": "jsdom",
"testURL": "http://localhost:8080/Dashboard/index.html",
"transform": {
"^.+\.js$": "<rootDir>/node_modules/babel-jest",
"^.+\.jsx$": "<rootDir>/node_modules/babel-jest"
},
"unmockedModulePathPatterns": [
"node_modules/react/",
],
"moduleFileExtensions": [
"js",
"jsx",
"json",
"es6"
]
}
setup.js
import jsdom from 'jsdom';
const DEFAULT_HTML = '<html><body></body></html>';
global.document = jsdom.jsdom(DEFAULT_HTML);
global.window = document.defaultView;
global.navigator = window.navigator;
global.localStorage = window.localStorage;
test.js
'use strict';
import setup from './setup';
import React from 'react';
import jsdom from 'jsdom';
import Reportlet from '../components/Reportlet.jsx';
it('Ensures the react component renders', () => {
});
我的 reportlet 组件使用了 localStorage 变量但是大喊:
Cannot read property getItem of undefined
当我调用 localStorage.getItem(<some item>)
我读到 here that jest comes shipped with jsdom but I am not sure if I need the extra jsdom dependency or not. I also read here 第一次需要 react 之前需要加载 jsdom。
有谁知道如何正确配置jest和jsdom?
jsdom 不支持localStorage。看起来您可以像 'node-localstorage' 这样使用 node-friendly 存根。请参阅评论底部 https://github.com/tmpvar/jsdom/issues/1137
...或者你可以用 https://github.com/letsrock-today/mock-local-storage
之类的东西来模拟它...或者像这里看到的那样滚动你自己的模拟:How to mock localStorage in JavaScript unit tests?