Я установил jest и jsdom в свой проект реакции, но у меня проблемы с импортом компонента реакции, который использует переменную window.localStorage
. Я добавил установочный файл для jsdom, который, как я полагал, решит проблему.
Вот моя установка:
конфиг jest в 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>)
Я прочитал здесь, что jest поставляется с jsdom, но я не уверен, нужна ли мне дополнительная зависимость jsdom или нет. Я также прочитал здесь, что jsdom необходимо загрузить, прежде чем требовать реакции для первого время.
Кто-нибудь знает, как правильно настроить jest с jsdom?