测试笑话时 _enzymeAdapterReact.default 不是构造函数

发布于 2025-01-20 13:59:56 字数 2395 浏览 2 评论 0原文

当我用笑话和酶测试反应本机组件时遇到这个问题 TypeError: _enzymeAdapterReact.default is not a constructor

这是我的开发依赖项:

    "@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"
  }

这是笑话配置:

    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

这是笑话设置:

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

它抛出这个在此处输入图像描述

这是我的测试文件:

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()
    })
})

请帮忙,非常感谢

I'm having this issue when test react-native component with jest and enzyme
TypeError: _enzymeAdapterReact.default is not a constructor

Here is my dev dependencies:

    "@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"
  }

Here is jest config:

    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

Here is jest setup:

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(),
}

I tried all method in this thread but not working also:
https://github.com/enzymejs/enzyme/issues/1284

It throw this enter image description here

Here is my test file:

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()
    })
})

Please help, thank you a lots

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

可爱咩 2025-01-27 13:59:57

您是否尝试在应用程序的根部中制作一个新的文件setuptest.js,然后放在那里,不每次此配置零件

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

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

如果使用type type脚本,那么

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

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

我的软件包JSON版本就

    "enzyme-adapter-react-16": "^1.15.3",
    "eslint": "^7.32.0",
    "jest": "^26.6.3",
    "jest-enzyme": "^7.1.2",

在package.json我有一个类似玩笑的配置

"jest": {
        "testEnvironment": "jsdom",
        "setupFilesAfterEnv": [
            "<rootDir>/setupTests.js",
            "./node_modules/jest-enzyme/lib/index.js",
            "jest-extended"
        ],
        "testResultsProcessor": "jest-junit"
    },

Have you try to make a new file setupTests.js , in the root of App , and put there , for not write every time this configuration part

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

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

if you using type script then

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

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

my package json versions are

    "enzyme-adapter-react-16": "^1.15.3",
    "eslint": "^7.32.0",
    "jest": "^26.6.3",
    "jest-enzyme": "^7.1.2",

in the package.json I have a configuration of jest like this

"jest": {
        "testEnvironment": "jsdom",
        "setupFilesAfterEnv": [
            "<rootDir>/setupTests.js",
            "./node_modules/jest-enzyme/lib/index.js",
            "jest-extended"
        ],
        "testResultsProcessor": "jest-junit"
    },
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文