javascript – TypeError:_enzyme2.default.configure不是函数

最近,我从React 15.4.2迁移到了React 16.0.0.
以下是我在项目中的当前版本:

{  
    "jest":{  
        "verbose":true,
        "automock":false,
        "testRegex":"\\.test\\.js$",
        "moduleNameMapper":{  
            "config":"<rootDir>/src/config/test.js",
            "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$":"<rootDir>/src/__tests__/__mocks__/fileMock.js",
            "\\.(css|less|scss)$":"<rootDir>/src/__tests__/__mocks__/styleMock.js",
            "\\Api.(js)$":"<rootDir>/src/__tests__/__mocks__/apiMock.js"
        },
        "coveragePathIgnorePatterns":[  
            "<rootDir>/src/utils/svgVisualization.js"
        ],
        "unmockedModulePathPatterns":[  
            "react"
        ],
        "moduleFileExtensions":[  
            "js",
            "json"
        ],
        "modulePathIgnorePatterns":[  
            "/node_modules/"
        ],
        "testPathIgnorePatterns":[  
            "/node_modules/"
        ],
        "setupFiles":[  
            "<rootDir>/src/__tests__/__mocks__/storageMock.js"
        ]
    },
    "main":"src/index.js",
    "scripts":{  
        "clean":"rimraf dist/*",
        "copy":"copyfiles -f ./src/index.html ./dist",
        "dist":"npm run clean && npm run copy && webpack --progress --bail --env dist -p",
        "dev":"npm run clean && npm run copy && webpack --progress --bail --env dev -p",
        "lint":"esw webpack.config.* src tools --color",
        "lint:watch":"npm run lint -- --watch",
        "release:major":"npm version prerelease && git push --follow-tags && npm publish --tag beta",
        "release:minor":"npm version prerelease && git push --follow-tags && npm publish --tag beta",
        "release:patch":"npm version prerelease && git push --follow-tags && npm publish --tag beta",
        "serve:dev":"webpack-dev-server --open --env dev",
        "serve:dist":"webpack-dev-server --open --env dist -p --progress",
        "open:src":"npm run serve:dev",
        "start":"npm-run-all --parallel open:src lint:watch",
        "test":"jest --coverage"
    },
    "devDependencies":{  
        "babel-core":"^6.7.6",
        "babel-eslint":"^7.1.0",
        "babel-jest":"^20.0.3",
        "babel-loader":"^6.2.4",
        "babel-plugin-istanbul":"^3.0.0",
        "babel-plugin-transform-class-properties":"^6.24.1",
        "babel-plugin-transform-decorators-legacy":"^1.3.4",
        "babel-plugin-transform-object-rest-spread":"^6.8.0",
        "babel-polyfill":"^6.9.0",
        "babel-preset-airbnb":"^2.0.0",
        "babel-preset-es2015":"^6.24.1",
        "babel-preset-es2015-native-modules":"^6.6.0",
        "babel-preset-react":"^6.24.1",
        "chai":"^4.1.2",
        "copyfiles":"^1.0.0",
        "css-loader":"^0.28.7",
        "enzyme":"^3.1.0",
        "enzyme-adapter-react-16":"^1.0.1",
        "eslint":"^4.1.1",
        "eslint-config-airbnb":"^15.1.0",
        "eslint-loader":"^1.3.0",
        "eslint-plugin-import":"^2.2.0",
        "eslint-plugin-jsx-a11y":"^5.1.1",
        "eslint-plugin-react":"^7.1.0",
        "file-loader":"^1.1.4",
        "jest":"^21.2.1",
        "jest-enzyme":"^4.0.0",
        "karma":"^1.0.0",
        "karma-chai":"^0.1.0",
        "karma-chrome-launcher":"^2.1.1",
        "karma-coverage":"^1.0.0",
        "karma-junit-reporter":"^1.0.0",
        "karma-mocha":"^1.0.1",
        "karma-mocha-reporter":"^2.0.3",
        "karma-phantomjs-launcher":"^1.0.0",
        "karma-sinon":"^1.0.5",
        "karma-sourcemap-loader":"^0.3.7",
        "karma-webpack":"^2.0.4",
        "mocha":"^3.0.0",
        "node-sass":"^4.5.3",
        "npm-run-all":"^4.0.2",
        "null-loader":"^0.1.1",
        "phantomjs-prebuilt":"^2.1.7",
        "postcss":"^6.0.12",
        "postcss-loader":"^2.0.6",
        "react-addons-test-utils":"^15.0.1",
        "react-test-renderer":"^16.0.0",
        "rimraf":"^2.5.2",
        "sass-loader":"^6.0.6",
        "sinon":"^4.0.0",
        "style-loader":"^0.18.2",
        "url-loader":"^0.5.7",
        "webpack":"^3.6.0",
        "webpack-bundle-size-analyzer":"^2.7.0",
        "webpack-dev-server":"^2.1.0-beta"
    },
    "dependencies":{  
        "@types/react":"^16.0.2",
        "babel-plugin-import":"^1.2.1",
        "babel-polyfill":"^6.23.0",
        "cross-env":"^5.0.5",
        "es6-tween":"^3.3.0",
        "eslint-watch":"^3.0.0",
        "image-webpack-loader":"^3.2.0",
        "immutable":"^3.8.1",
        "jwt-decode":"^2.1.0",
        "lodash":"^4.17.4",
        "material-ui":"0.19.3",
        "moment":"^2.18.1",
        "nock":"^9.0.13",
        "prop-types":"^15.5.8",
        "react":"^16.0.0",
        "react-addons-css-transition-group":"^15.4.2",
        "react-addons-shallow-compare":"^15.5.2",
        "react-bootstrap":"^0.31.3",
        "react-breadcrumbs":"^1.5.2",
        "react-dnd":"^2.4.0",
        "react-dnd-html5-backend":"^2.4.1",
        "react-dom":"^16.0.0",
        "react-ga":"^2.2.0",
        "react-helmet":"^5.0.0-beta",
        "react-hot-loader":"^3.0.0-beta.6",
        "react-redux":"^5.0.3",
        "react-router":"^3.0.0",
        "react-tap-event-plugin":"^3.0.2",
        "react-tooltip":"^3.3.0",
        "reactour":"^1.0.1",
        "redux":"^3.6.0",
        "redux-form":"^7.0.4",
        "redux-logger":"^3.0.6",
        "redux-mock-store":"^1.2.3",
        "redux-thunk":"^2.2.0",
        "styled-components":"^2.1.1",
        "superagent":"^3.5.0",
        "svg.js":"^2.6.2",
        "three":"^0.87.1",
        "throttle-debounce":"^1.0.1",
        "universal-cookie":"^2.0.8",
        "webpack":"^3.6.0",
        "whatwg-fetch":"^2.0.2"
    }
}

与React一起,我迁移到Enzyme 3.6.0并开始使用酶适配器反应,因此在我的测试条目(src / config.test.js)中我这样做了:

import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

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

当我尝试像往常一样使用jest运行测试时,我会收到标题中的错误.

此外,如果我尝试使用jest-enzyme并将其添加到我的jest配置中:

"setupTestFrameworkScriptFile": "./node_modules/jest-enzyme/lib/index.js", 

我收到另一个错误:

TypeError: Super expression must either be null or a function, not undefined.

所以我有点卡住,无论我尝试什么,我都无法让我的测试工作.任何帮助表示赞赏.

解决方法:

帮助我的是以下内容:将’config’中的别名重命名为其他内容,例如: “我-配置”.
在moduleNameMapper中:{“my-config”:“/ src / config / test.js”…}

当然还会更改js代码中的导入.应该工作.

它必须在酶或其他依赖性中具有一些名称冲突.

上一篇:javascript – React Enzyme – 测试`componentDidMount`异步调用


下一篇:javascript – 如何测试React组件上定义为箭头函数(类属性)的组件方法?