使用Babel和Webpack设置Jest

时间:2017-01-11 11:25:57

标签: javascript angularjs webpack jestjs

我有一个旧的角度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未定义。有什么办法解决这个问题?有经验的人吗?

0 个答案:

没有答案