Tengo este problema cuando pruebo el componente nativo de reacción con broma y la enzima TypeError: _enzymeAdapterReact.default is not a constructor
Aquí están mis dependencias de desarrollo:
"@babel/core": "^7.12.10", "@babel/runtime": "^7.12.5", "@react-native-community/eslint-config": "^2.0.0", "babel-jest": "^26.6.3", "enzyme": "^3.11.0", "enzyme-adapter-react-16": "^1.15.6", "eslint": "^7.16.0", "jest": "^26.6.3", "jest-environment-enzyme": "^7.1.2", "@types/enzyme": "^3.10.12", "jest-enzyme": "^7.1.2", "metro-react-native-babel-preset": "^0.64.0", "react-test-renderer": "^17.0.0", "redux-mock-store": "^1.5.4" }
Aquí está la configuración de broma:
verbose: true, preset:'react-native', transformIgnorePatterns: [ 'node_modules/(?!victory-native|(jest-)?viewpager|enzyme|react-native|@react-native-community|react-native-device-info|react-native-mov-to-mp4|@react-navigation)/', ], setupFiles: ['./jest.setup.js'], setupFilesAfterEnv: ['./node_modules/jest-enzyme/lib/index.js'], testEnvironment: 'enzyme', testEnvironmentOptions: { 'enzymeAdapter': 'react16', }, } module.exports = config
Aquí está la configuración de broma:
import { NativeModules } from 'react-native' import mockAsyncStorage from '@react-native-async-storage/async-storage/jest/async-storage-mock' jest.mock('@react-native-async-storage/async-storage', () => mockAsyncStorage) NativeModules.RNCNetInfo = { getCurrentState: jest.fn(() => Promise.resolve()), addListener: jest.fn(), removeListeners: jest.fn(), }
Probé todos los métodos en este hilo pero tampoco funcionaron: https://github.com/enzymejs/enzyme/issues/1284
Aquí está mi archivo de prueba:
import React from 'react' import {AddActionItem} from '../add-action-item' import Enzyme,{ shallow } from 'enzyme' import renderer from 'react-test-renderer' import Adapter from 'enzyme-adapter-react-16' Enzyme.configure({ adapter: new Adapter() }) describe('Test Add Action Item', ()=>{ test('test componet',()=>{ expect(shallow(<AddActionItem/>)).toMatchSnapshot() }) })
Ayuda por favor, muchas gracias
¿Has probado a hacer un nuevo archivo setupTests.js, en la raíz de la aplicación, y ponerlo allí, para no escribir cada vez que parte esta configuración ?
import { configure } from 'enzyme'; import Adapter from 'enzyme-adapter-react-16'; configure({ adapter: new Adapter() });
si usa script de tipo entonces
import { configure } from 'enzyme'; import * as Adapter from 'enzyme-adapter-react-16'; configure({ adapter: new Adapter() });
las versiones de mi paquete json son
"enzyme-adapter-react-16": "^1.15.3", "eslint": "^7.32.0", "jest": "^26.6.3", "jest-enzyme": "^7.1.2",
en el paquete.json tengo una configuración de broma como esta
"jest": { "testEnvironment": "jsdom", "setupFilesAfterEnv": [ "<rootDir>/setupTests.js", "./node_modules/jest-enzyme/lib/index.js", "jest-extended" ], "testResultsProcessor": "jest-junit" },