首页 > 解决方案 > Jest 测试中的 Webpack 别名和配置

问题描述

我正在更新一个较旧的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开玩笑的配置中来解决这个问题,package.json如下所示:

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

这似乎有效。

我的问题的第二部分是允许 Jestsrc/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/`
    }
  }

标签: testingwebpackjestjswebpack-2

解决方案


推荐阅读