【问题标题】:ReferenceError on enzyme import酶导入参考错误
【发布时间】:2016-06-16 04:04:59
【问题描述】:

我正在尝试使用酶和玩笑为反应原生组件编写基本测试。我收到一个错误,暗示没有正确导入酶:

● 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(true).toBe(true)。我已经浏览了很多关于 JS 中的 referenceErrors 的问题,但似乎没有一个适用于这种情况(无论如何,在我没有经验的眼里)。

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

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

据我所知,我的 package.json 具有正确的依赖关系。我试过重新安装酶但没有成功。这里是:

{
  "name": "PropertyFinder",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "react-native": "^0.20.0",
    "react-dom": "~0.14.7"
  },
  "devDependencies": {
    "babel-jest": "*",
    "enzyme": "^2.0.0",
    "jest-cli": "^0.8.2",
    "react": "^0.14.7",
    "react-addons-test-utils": "~0.14.0",
    "react-native-mock": "0.0.6"
  },
  "jest": {
    "scriptPreprocessor": "node_modules/react-native/jestSupport/preprocessor.js",
    "setupEnvScriptFile": "node_modules/react-native/jestSupport/env.js",
    "testPathIgnorePatterns": [
      "/node_modules/",
      "packager/react-packager/src/Activity/"
    ],
    "testFileExtensions": [
      "js"
    ],
    "unmockedModulePathPatterns": [
      "promise",
      "source-map",
      "react",
      "react-dom",
      "react-addons-test-utils",
      "fbjs",
      "enzyme",
      "cheerio",
      "htmlparser2",
      "lodash",
      "domhandler",
      "object.assign",
      "define-properties",
      "function-bind",
      "object-keys",
      "object.values",
      "es-abstract"
    ]
  }
}

在这种情况下可能/会抛出这个 ReferenceError 是什么?如果我尝试 mocha/chai 看看是否可行,我可能会很快发表评论,但我宁愿在这一点上继续开玩笑。

【问题讨论】:

    标签: javascript reactjs react-native jestjs enzyme


    【解决方案1】:

    问题源于 ES6 explained in more detail here 中的导入提升。使用 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"
        ]
      },
    

    【讨论】:

    • 预处理器已被 'transform' 替换,如下所示 "transform": { "^.+\\.(js|jsx|ts|tsx)$": "/node_modules/ babel-jest", "^.+\\.css$": "/config/jest/cssTransform.js", "^(?!.*\\.(js|jsx|ts|tsx|css |json)$)": "/config/jest/fileTransform.js" },我仍然遇到同样的错误,你能帮忙吗?
    猜你喜欢
    • 2017-10-01
    • 2014-06-24
    • 2021-12-29
    • 2016-11-02
    • 2013-08-15
    • 2013-02-11
    • 2015-07-30
    • 2018-03-12
    • 2012-12-27
    相关资源
    最近更新 更多