настроить localStorage для тестирования приложения React с помощью jest - PullRequest
0 голосов
/ 10 сентября 2018

Я создал пустое приложение с create-react-app. он предоставляет тестовый скрипт в pckage.json и образец App.test.js. на первом этапе я хочу настроить тестовую среду в соответствии с документацией create-реакции-app . в моем приложении я буду использовать localStorage. скажем, действие, подобное приведенному ниже, для проверки

export const cancel = () => {
  localStorage.removeItem("MyAppData");
  return { type: types.USER_CANCEL};
};

помимо части фермента, он показывает, как инициализировать localStorage. поэтому я получил файл setupTests.js, например

import { configure } from "enzyme";
import Adapter from "enzyme-adapter-react-16";
// react-testing-library renders your components to document.body,
// this will ensure they're removed after each test.
import "react-testing-library/cleanup-after-each";
// this adds jest-dom's custom assertions
import "jest-dom/extend-expect";

configure({ adapter: new Adapter() });

const localStorageMock = {
  getItem: jest.fn(),
  setItem: jest.fn(),
  clear: jest.fn()
};
global.localStorage = localStorageMock;

здесь, если я не импортирую jest из jest, jest-dom или jest-фермента, ESLinter показывает ошибку в jest.fn(), что jest не определен. когда я импортирую и запускаю yarn test, я получаю

$ react-scripts test --env=jsdom
 FAIL  src\App.test.js
  ● Test suite failed to run

    TypeError: _jest2.default.fn is not a function

      at Object.<anonymous> (src/setupTests.js:15:27)
          at <anonymous>

Я действительно не получаю от QAs здесь и на других форумах, как мне настроить localStorage для тестирования.

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Я действительно не знаю, что именно произошло, некоторые пакеты, связанные с шуткой, джет-домом, джест-энзимом, приводили к конфликту. но мне удалось заставить его работать после удаления package-lock.json, yarn.lock, node_modules, удаления jest из зависимостей в package.json, затем установки npm и установки yarn!

0 голосов
/ 10 сентября 2018

Вам не нужно импортировать jest в свои тестовые файлы.

Вместо этого вы должны сказать eslint, что Environment следует ожидать в файле, чтобы он знал, какие глобальные переменные присутствуют.

Добавьте это в начало всех файлов, где вы используете Jest Globals

/* eslint-env jest */
...