我正在试图弄清楚如何让Jest在我的环境中工作,而我遇到的问题是这个项目在node_modules的子目录中有一堆自定义组件。
我收到了这个错误:
FAIL src/mantle/tools/searchindexer/apps/DataMover/js/components/__test__/GenericJobsTable.test.jsx
● Test suite failed to run
/Users/rob/repos/mesa/ui/node_modules/iggy-common/components/IggyTable.jsx:1
({"Object.":function(module,exports,require,__dirname,__filename,global,jest){import React, {PropTypes} from "react";
^^^^^^
SyntaxError: Unexpected token import
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/ScriptTransformer.js:289:17)
at Object. (src/mantle/tools/searchindexer/apps/DataMover/js/components/JobsTable/GenericJobsTable.jsx:7:18)
at Object. (src/mantle/tools/searchindexer/apps/DataMover/js/components/__test__/GenericJobsTable.test.jsx:5:25)
Test Suites: 1 failed, 1 total
Tests: 0 total
Snapshots: 0 total
Time: 2.4s
Ran all test suites matching "GenericJobsTable".
我在NodeJS 7.7.1上运行jest ^20.0.3
和babel-jest ^20.0.3
。
在我的package.json中,这是我的jest配置部分:
"jest": {
"verbose": true,
"transform": {
"^.+\\.jsx$": "babel-jest"
},
"moduleFileExtensions": [
"js",
"jsx"
],
"moduleDirectories": [
"node_modules"
]
}
我的根.babelrc
定义为:
{
"presets": ["es2015", "react"]
}
如果我运行jest --debug
,我会看到:
{
"config": {
"automock": false,
"browser": false,
"cache": false,
"cacheDirectory": "/var/folders/wz/hd_hp8zn6gq7p6816w1hwx640000gn/T/jest_dx",
"clearMocks": false,
"coveragePathIgnorePatterns": [
"/node_modules/"
],
"globals": {},
"haste": {
"providesModuleNodeModules": []
},
"moduleDirectories": [
"node_modules"
],
"moduleFileExtensions": [
"js",
"jsx"
],
"moduleNameMapper": {},
"modulePathIgnorePatterns": [],
"name": "898fa528b40c10619090191345fdb241",
"resetMocks": false,
"resetModules": false,
"rootDir": "/Users/rob/repos/mesa/ui",
"roots": [
"/Users/rob/repos/mesa/ui"
],
"setupFiles": [
"/Users/rob/repos/mesa/ui/node_modules/regenerator-runtime/runtime.js"
],
"snapshotSerializers": [],
"testEnvironment": "jest-environment-jsdom",
"testMatch": [
"**/__tests__/**/*.js?(x)",
"**/?(*.)(spec|test).js?(x)"
],
"testPathIgnorePatterns": [
"/node_modules/"
],
"testRegex": "",
"testRunner": "/Users/rob/repos/mesa/ui/node_modules/jest-jasmine2/build/index.js",
"testURL": "about:blank",
"timers": "real",
"transform": [
[
"^.+\\.jsx$",
"/Users/rob/repos/mesa/ui/node_modules/babel-jest/build/index.js"
]
],
"transformIgnorePatterns": [
"/node_modules/"
]
},
"framework": "jasmine2",
"globalConfig": {
"bail": false,
"coverageReporters": [
"json",
"text",
"lcov",
"clover"
],
"expand": false,
"mapCoverage": false,
"noStackTrace": false,
"notify": false,
"projects": [
"/Users/rob/repos/mesa/ui"
],
"rootDir": "/Users/rob/repos/mesa/ui",
"testPathPattern": "",
"testResultsProcessor": null,
"updateSnapshot": "new",
"useStderr": false,
"verbose": true,
"watch": false,
"watchman": true
},
"version": "20.0.3"
}
知道我可能在这里错误配置了什么吗?
答案 0 :(得分:21)
解决!!!!!问题结果是node_modules / iggy-common中的那些讨厌的文件之一是一个简单的问题。 JS文件需要转换:
"jest": {
"verbose": true,
"transform": {
"^.+\\.jsx$": "babel-jest",
"^.+\\.js$": "babel-jest"
},
"moduleFileExtensions": [
"js",
"jsx"
],
"moduleDirectories": [
"node_modules"
],
"transformIgnorePatterns": [
"node_modules/(?!iggy-common)"
]
}