如何为Jest测试指定模块路径?

时间:2014-08-20 18:59:13

标签: reactjs jestjs

它似乎不尊重NODE_PATHS env变量,而只是查看当前目录。

6 个答案:

答案 0 :(得分:3)

Jest不会读取NODE_PATH。在我们使用webpack的项目中,我们遇到了aliasmoduleDirectories的问题。 Jest没有正确解析路径。所以我们这样解决了: 假设您要导入

import SomeComp from 'components/SomeComp';

位于/src/components/SomeComp/index.js

package.json中定义:

"jest": {
  "moduleNameMapper": {
    "/src/(.*)": "<rootDir>/src/$1"
  }
},

答案 1 :(得分:3)

遇到同一问题,Jest不尊重webpack模块解析别名。

jest.config.js中:

moduleNameMapper: {
    'Services(.*)$': '<rootDir>/src/services/$1'
}

您现在可以使用以下导入语句:

import { validateEmail } from 'Services/utilities';

答案 2 :(得分:2)

目前Jest在其模块解析代码中并不支持NODE_PATH(除了事实上它没有被构建之外没有任何理由)。

我们现在正在跟踪此问题:https://github.com/facebook/jest/issues/102

答案 3 :(得分:1)

来自Jest文档:

https://jestjs.io/docs/en/configuration

package.json

定义:

"jest": {
  "modulePaths": [
    "<rootDir>/src/"
  ],
},

答案 4 :(得分:0)

把它放在你的 package.json 中

"jest": {
  "modulePaths": [
    "<rootDir>"
  ],
},

答案 5 :(得分:0)

遇到了同样的问题,这是我解决的方法。 假设您正在尝试导入 src/components/404.vue 在你的 package.json 中:

... 
  "jest": {
    "modulePaths": [
      "<rootDir>/src/components"
    ]
  }
...

绝对路径“/src/components/”现在可以在您的 404.test.js 中解析为:

import Page404 from '404.vue'