首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在测试时,_enzymeAdapterReact.default不是构造函数

在测试时,_enzymeAdapterReact.default不是构造函数
EN

Stack Overflow用户
提问于 2022-04-12 04:23:17
回答 1查看 226关注 0票数 0

当测试与jest和酶TypeError: _enzymeAdapterReact.default is not a constructor反应时,我遇到了这个问题--本机成分

下面是我的dev依赖项:

代码语言:javascript
复制
    "@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"
  }

下面是jest配置:

代码语言:javascript
复制
    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

这里是jest设置:

代码语言:javascript
复制
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(),
}

我在这个线程中尝试了所有的方法,但是没有工作:https://github.com/enzymejs/enzyme/issues/1284

把这个扔出去

这是我的测试文件:

代码语言:javascript
复制
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()
    })
})

请帮忙,非常感谢

EN

回答 1

Stack Overflow用户

发布于 2022-05-04 16:09:43

您是否尝试在App的根目录中创建一个新文件setupTests.js,并将放在那里,以避免每次编写此配置部分

代码语言:javascript
复制
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

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

如果您使用脚本类型,那么

代码语言:javascript
复制
import { configure } from 'enzyme';
import * as Adapter from 'enzyme-adapter-react-16';

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

我的包json版本是

代码语言:javascript
复制
    "enzyme-adapter-react-16": "^1.15.3",
    "eslint": "^7.32.0",
    "jest": "^26.6.3",
    "jest-enzyme": "^7.1.2",

在package.json中,我有一个像这样的jest配置

代码语言:javascript
复制
"jest": {
        "testEnvironment": "jsdom",
        "setupFilesAfterEnv": [
            "<rootDir>/setupTests.js",
            "./node_modules/jest-enzyme/lib/index.js",
            "jest-extended"
        ],
        "testResultsProcessor": "jest-junit"
    },
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71837100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档