#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!