我正在尝试使用酶和开玩笑为反应天然成分编写一个基本测试。我收到一个错误,暗示酶未正确导入:
● 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" ] } }
在这种情况下,会/将会抛出什么?如果我尝试使用mocha / chai看看是否可行,我可能会很快发表评论,但目前,我宁愿保持开玩笑的态度。
问题是由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" ] },