我有一个旧的角度1应用程序,它使用Karma + Jasmine,我正在迁移到Webpack + React + Babel,到目前为止一直很好。现在我也想切换到Jest。所以我设置了开玩笑:
//package.json
"jest": {
"scriptPreprocessor": "./node_modules/babel-jest",
"verbose": true,
"testPathDirs": [
"app/src"
],
"setupTestFrameworkScriptFile": "./app/src/jest.init.js",
"unmockedModulePathPatterns": [
"./node_modules/"
],
"moduleFileExtensions": ["js", "json", "es6"]
}
我的jest.init.js
看起来像:
import 'babel-polyfill';
import _ from 'lodash';
import jest from 'jest';
import io from 'socket.io';
import 'angular';
import 'angular-mocks';
import 'angular-ui-bootstrap';
import '../../build/js/main_libs';
import '../../build/js/app';
app.js
是我的应用程序的编译(来自Webpack / Babel)版本。问题出在global
。有一个看起来像这样的功能
(function(global) {
if (global._babelPolyfill) {
throw new Error("only one instance of babel-polyfill is allowed");
}
global._babelPolyfill = true;
}.call(exports, (function() { return this; }())
我认为问题是JEST不会在浏览器上运行,因此没有window
对象,global
未定义。有什么办法解决这个问题?有经验的人吗?