Не удается найти модуль ‘enzyme’ из ‘setupTests.ts’

#reactjs #typescript #unit-testing #enzyme

#reactjs #машинописный текст #модульное тестирование #enzyme

Вопрос:

Я хочу использовать enzyme для выполнения модульных тестов в моем проекте React с TypeScript.

Я использовал документацию по добавлению тестов в create-react-app — запускающие тесты

Я создал файл setupTests.ts в /src

setupTests.ts

 import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

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

И я написал тест

App.test.ts

 import React from 'react';
import { shallow } from 'enzyme';
import App from './App';

it('renders without crashing', () => {
  shallow(<App />);
});

  

Тест с использованием react-dom работает нормально, если я прокомментирую строку, которая настраивает адаптер в setupTests.ts

setupTests.ts

 import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

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

App.test.ts

 import React from 'react';
import ReactDOM from 'react-dom';
import App from './components/Dashboard';

it('renders without crashing', () => {
  const div = document.createElement('div');
  ReactDOM.render(<App />, div);
});
  

package.json

 {
  "name": "sampleapp",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@material-ui/core": "^3.9.2",
    "@material-ui/icons": "^3.0.2",
    "@types/enzyme": "^3.9.1",
    "@types/enzyme-adapter-react-16": "^1.0.5",
    "@types/enzyme-to-json": "^1.5.3",
    "@types/jest": "24.0.11",
    "@types/node": "11.12.0",
    "@types/react": "16.8.8",
    "@types/react-dom": "16.8.3",
    "@types/react-redux": "^7.0.5",
    "@types/react-router-dom": "^4.3.1",
    "@types/redux-thunk": "^2.1.0",
    "axios": "^0.18.0",
    "react": "^16.8.5",
    "react-dom": "^16.8.5",
    "react-redux": "^6.0.1",
    "react-router-dom": "^5.0.0",
    "react-scripts": "2.1.8",
    "redux": "^4.0.1",
    "redux-thunk": "^2.3.0",
    "typescript": "3.3.4000"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": [
    ">0.2%",
    "not dead",
    "not ie <= 11",
    "not op_mini all"
  ]
}
  

Предполагается, что тест выполнен успешно. Но он терпит неудачу и выдает мне ошибку

Cannot find module 'enzyme' from 'setupTests.ts'

Комментарии:

1. похоже, вы не установили enzyme

2. @Мальчик с серебряными крыльями у меня есть.. он установлен как @types /enzyme, поскольку я использую typescript.

3. @Sruthi @types/enzyme используется только для интерфейсов typescript и так далее.

4. просто установите все библиотеки, как описано в документах , на которые вы ссылались. @types это просто типизации

Ответ №1:

Вы должны делать yarn add enzyme , и у вас все будет хорошо! Или npm i enzyme если вы используете npm.

@types/enzyme используется для получения интерфейсов typescript, но не фактического пакета enzyme!