Javascript 有关酶导入的引用错误

Javascript 有关酶导入的引用错误,javascript,reactjs,react-native,jestjs,enzyme,Javascript,Reactjs,React Native,Jestjs,Enzyme,我正试图用酶和jest为react原生成分编写一个基本测试。我得到一个错误,暗示没有正确导入酶: ● SearchPage › it starts spinner when page is loading - ReferenceError: _enzyme is not defined at Spec.eval (__tests__/basic-test.js:12:16) 1 test failed, 0 tests passed (1 total in 1 test su

我正试图用酶和jest为react原生成分编写一个基本测试。我得到一个错误,暗示没有正确导入酶:

● SearchPage › it starts spinner when page is loading
  - ReferenceError: _enzyme is not defined
        at Spec.eval (__tests__/basic-test.js:12:16)
1 test failed, 0 tests passed (1 total in 1 test suite, run time 1.113s)
npm ERR! Test failed.  See above for more details.
我尝试重新安装酶软件包,并盲目地修改代码,因为我是一个新手。不使用浅层酶工作的基本测试,即expect(正确)。toBe(正确)。我已经仔细研究了很多关于JS中引用错误的问题,但在这种情况下似乎没有一个是适用的(在我缺乏经验的眼中)

这是测试文件。非常简单,限制了错误的来源

jest.dontMock('../SearchPage');

import React from 'react';
import { shallow } from 'enzyme';
import ReactDOM from 'react-dom';
import TestUtils from 'react-addons-test-utils';

const SearchPage = require('../SearchPage');

describe('SearchPage', () => {
  it('starts spinner when page is loading', () => {
    const wrapper = shallow(<SearchPage />);

    // Check that it is false initially i.e. not loading.
    expect(wrapper.state('isLoading')).toBe(false);

    // Simulate a touch on 'Go' button and verify loading is now true
  });
});

在此上下文中,什么可能/将抛出此ReferenceError?如果我尝试摩卡/柴咖啡,看看它是否管用,我可能会很快发表评论,但在这一点上,我宁愿继续开玩笑。

这个问题源于ES6中进口的提升。使用babel jest作为预处理器将解决此问题,但保留“setupEnvScriptFile”很重要

对我有用的例子

"jest": {
    "preprocessorIgnorePatterns": [
      "node_modules/enzyme"
    ],
    "scriptPreprocessor": "<rootDir>/node_modules/babel-jest",
    "setupEnvScriptFile": "node_modules/react-native/jestSupport/env.js",
    "testPathIgnorePatterns": [
      "/node_modules/",
      "packager/react-packager/src/Activity/"
    ],
    "unmockedModulePathPatterns": [
      "react",
      "react-dom",
      "react-native",
      "react-addons-test-utils",
      "promise",
      "source-map",
      "enzyme"
    ]
  },
“开玩笑”:{
“预处理器重新模式”:[
“节点单元/酶”
],
“scriptPreprocessor”:“/节点\模块/babel jest”,
“setupEnvScriptFile”:“node_modules/react native/jestSupport/env.js”,
“testPathIgnorePatterns”:[
“/node_modules/”,
“分装商/反应分装商/src/Activity/”
],
“unmockedModulePathPatterns”:[
“反应”,
“反应dom”,
“本地反应”,
“react插件测试utils”,
“承诺”,
“源地图”,
“酶”
]
},

这个问题源于ES6中进口的提升。使用babel jest作为预处理器将解决此问题,但保留“setupEnvScriptFile”很重要

对我有用的例子

"jest": {
    "preprocessorIgnorePatterns": [
      "node_modules/enzyme"
    ],
    "scriptPreprocessor": "<rootDir>/node_modules/babel-jest",
    "setupEnvScriptFile": "node_modules/react-native/jestSupport/env.js",
    "testPathIgnorePatterns": [
      "/node_modules/",
      "packager/react-packager/src/Activity/"
    ],
    "unmockedModulePathPatterns": [
      "react",
      "react-dom",
      "react-native",
      "react-addons-test-utils",
      "promise",
      "source-map",
      "enzyme"
    ]
  },
“开玩笑”:{
“预处理器重新模式”:[
“节点单元/酶”
],
“scriptPreprocessor”:“/节点\模块/babel jest”,
“setupEnvScriptFile”:“node_modules/react native/jestSupport/env.js”,
“testPathIgnorePatterns”:[
“/node_modules/”,
“分装商/反应分装商/src/Activity/”
],
“unmockedModulePathPatterns”:[
“反应”,
“反应dom”,
“本地反应”,
“react插件测试utils”,
“承诺”,
“源地图”,
“酶”
]
},

预处理器已被类似于“transform”的“transform”替换:{“^.+\.(js | jsx | ts | tsx)$”:“/node_modules/babel jest”,“^.+\.css$”:“/config/jest/cssTransform.js”,“^(?..*\.(js js js jsx | ts | tsx | css | json)$):”:“/config/jest/fileTransform js,我仍然收到相同的错误,你能帮忙吗?预处理器已经被这样的“转换”所取代:{“^.+\.(js | jsx | ts | tsx)$”:“/node_modules/babel jest”,“^.+\.css$”:“/config/jest/cssTransform.js”,“^(?。*\.(js js js | jsx | ts | tsx | css | json)$):”:“/config/jest/fileTransform js我仍然收到同样的错误,你能帮助吗?