1

酵素と jest を使用して、反応ネイティブ コンポーネントの基本的なテストを作成しようとしています。酵素が正しくインポートされていないことを示すエラーが表示されます。

● 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 を試してみたら、すぐにコメントするかもしれませんが、この時点では冗談を言い続けたいと思います。

4

1 に答える 1

0

この問題は、ここで詳しく説明されている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"
    ]
  },
于 2016-04-22T02:17:48.553 に答える