使用 Jest 忽略文件扩展名

ignore file extension with Jest

我正在使用 webpack resolve.extensions 来 "selectively" 捆绑我的 js 文件。 例如

App.js

import MyComp from 'comp/myComp';

comp/ 文件夹中我有:

MyComp.web.js
MyComp.ios.js
MyComp.android.js

现在我想为 App.js 编写测试,以测试它如何呈现为 Web。但问题是 Jest 一直在解析所有 3 个 .js 文件,这会导致依赖性错误,因为我不是 运行 移动环境中的命令,大多数移动模块将无法工作。

如何让 jest 像 webpack 一样只解析 .js.web.js 文件?

我将它添加到我的 package.json 并且它继续解析 .ios.js.android.js

"moduleFileExtensions": ["web.js", "js", "jsx"],
    "moduleDirectories": [
      "node_modules",
      "main"]

我按照建议尝试了:

"testPathIgnorePatterns": ["<rootDir>/node_modules/", "^.+\.(android|ios)\.js$"],

看起来没有效果:(

您可以将 testPathIgnorePatterns 添加到您的 package.json 文件中。该值是一组正则表达式模式。任何与表达式匹配的 file/path 都将 ignored/skipped 来自测试。

有关详细信息,请参阅 these Jest docs

您也可以将文件重新映射到空文件

touch empty.js

在你的 jest 配置中添加以下内容

  moduleNameMapper: {
    '\.(css|jpg|png|scss|less|sass)$': '<rootDir>/empty.js',
  },

非常适合我