使用 Jest 忽略文件扩展名

Yic*_*aoz 4 unit-testing reactjs jestjs enzyme

我正在使用 webpack resolve.extensions 来“有选择地”捆绑我的 js 文件。例如。

应用程序.js

import MyComp from 'comp/myComp';
Run Code Online (Sandbox Code Playgroud)

comp/文件夹中我有:

MyComp.web.js
MyComp.ios.js
MyComp.android.js
Run Code Online (Sandbox Code Playgroud)

现在我想为 编写测试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"]
Run Code Online (Sandbox Code Playgroud)

我按照建议尝试:

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

看起来没有效果:(

Den*_*lka 6

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

touch empty.js
Run Code Online (Sandbox Code Playgroud)

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

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

非常适合我


Jor*_*tis 1

您可以添加testPathIgnorePatterns到您的package.json文件中。该值是正则表达式模式的数组。任何与表达式匹配的文件/路径都将被忽略/跳过测试。

有关更多详细信息,请参阅这些 Jest 文档