1

我在项目的特定文件夹中集成单元测试时遇到问题。

我的架构如下:

|_ shared
|_ job-board
|_ admin-panel

job_boardadmin-panel每个都包含一个指向shared、 at的符号链接,并且每个都包含一个安装了 babel-eslint 的文件夹。shared不包含 node_modules 文件夹,并且依赖于另外 2 个文件夹的 node_modules。./client/src/sharednode_modules

使用这种架构,我已经成功地配置了我正在使用的所有工具(Webpack、eslint、eslint-loader,......但 Jest)。

job_board/*问题是,当我在or中创建 *.test.js 文件时admin_panel/*,babel-jest 已正确应用于此文件,但是当我在 中创建此文件时shared/*,babel-jest 未应用(因为 babel-jest 不可用in shared),如以下错误证明:

FAIL  ..\shared\utils\tests\StringUtils.test.js
● Test suite failed to run
SyntaxError: Unexpected token import

这是我的jest-config.json文件:

{
  "moduleFileExtensions": [
    "js"
  ],
  "moduleNameMapper": {
    "\\.(css|scss)$": "identity-obj-proxy"
  },
  "modulePaths": [
    "<rootDir>/client"
  ],
  "testPathDirs": [
    "<rootDir>",
    "<rootDir>/../shared"
  ],
  "testRegex": "(\\.|/)test\\.jsx?$"
}

(请注意,我必须添加"<rootDir>/../shared"才能testPathDirs找到 *.test.js 文件)

还有我的.babelrc文件:

{
  "plugins": [
    "transform-decorators-legacy",
    "transform-object-rest-spread"
  ],
  "presets": [
    ["es2015", { "modules": false }],
    "react",
    "stage-0"
  ],
  "env": {
    "development": {
      "presets": [
        "react-hmre"
      ]
    },
    "test": {
      "plugins": ["transform-es2015-modules-commonjs"]
    }
  }
}

最后,我运行我的测试:node --harmony_proxies node_modules/jest-cli/bin/jest.js --config ./jest-config.json

我是否遗漏了一些东西,或者这是否真的缺乏能够为 babel-eslint 或其他东西提供“根”的功能?

我还在 Jest 存储库上打开了一个问题,但它已关闭。所以我在这里!

上面粘贴的 Jest 配置。

开玩笑的cli:18.1.0

节点:5.6.0

npm:3.6.0

操作系统:Windows 10

4

2 回答 2

0

看起来你和这个人有类似的问题。

您是否在 .babelrc 文件中尝试过以下操作?

"env": {
  "start": {
    "presets": [
      "react-hmre"
    ]
  },
  "test": {
    "presets": ["es2015", "react", "stage-0"],
    "plugins": ["transform-es2015-modules-commonjs"]
  }
}
于 2017-02-09T16:37:28.670 回答
0

对于那些对解决方法感兴趣的人,我在浏览 babel-jest 的源文件时想出了一个解决方案。只需在你的 repos 的公共根目录创建一个 .babelrc,扩展真实的。所以在我的情况下:

{
  "extends": "./admin-panel/.babelrc"
}
于 2017-02-09T18:06:08.643 回答