Jest测试中的Webpack别名和配置

时间:2018-06-20 07:12:51

标签: testing webpack jestjs webpack-2

我正在将一个较旧的Webpack2项目更新为Webpack4,并将测试切换到Jest,但是几个与Webpack相关的问题似乎看似简单。

具体来说,麻烦的项目的项目结构如下所示:

src
    - constants
        - index.js
    - config
        - base.js
        - test.js
        - dev.js
        - dist.js

在测试过程中,被测试的类使用import config from 'config',因此第一期允许他们找到正确的配置文件。使用Webpack2,它由webpack本身提供支持,但显然不在Jest测试期间。

我可以通过将特定的测试配置硬编码到moduleNameMapper的jest配置中的package.json中来解决此问题,

"jest": {
    "moduleNameMapper": {
        "^config$": "<rootDir>/src/config/test.js"
    }
}

这似乎起作用。

问题的第二部分是允许Jest使用src/constants/index.js这样的语法来查找命名的导出文件import { SOME_CONST } from 'constants'

当我尝试使用moduleNameMapper时,会从使用常量的所有内容中返回undefined,我相信这是因为moduleNameMapper主要用于模拟依赖关系,而不是提供依赖关系。 考虑到这一点,我认为我需要使用modulePathsmoduleDirectories来定位constants

我尝试了以下配置(并非同时进行),但没有任何运气:

"modulePaths": [
  "<rootDir>/src/constants",
  "src/constants"
],
"moduleDirectories": [
  "node_modules",
  "src",
  "src/constants",
  "/src/constants"
  "/src/constants/",
  "./src/constants"
],

Jest的正确配置应该是什么才能找到我的常数?

如果有什么帮助,我想模仿Webpack2中的Jest配置

  resolve: {
    alias: {
      constants: `${this.srcPathAbsolute}/constants/`
    }
  }

0 个答案:

没有答案