【问题标题】:ignore file extension with Jest用 Jest 忽略文件扩展名
【发布时间】:2017-02-22 04:22:36
【问题描述】:

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

App.js

import MyComp from 'comp/myComp';

comp/ 文件夹中我有:

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

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

我如何告诉 jest 只解析 .js.web.js 文件,就像 webpack 一样?

我将此添加到我的 package.json 中,它会继续解析 .ios.js.android.js

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

我按照建议尝试了:

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

看起来没有效果:(

【问题讨论】:

    标签: unit-testing reactjs jestjs enzyme


    【解决方案1】:

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

    touch empty.js
    

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

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

    非常适合我

    【讨论】:

      【解决方案2】:

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

      详情请见these Jest docs

      【讨论】:

      • 我确实尝试过"testPathIgnorePatterns": ["&lt;rootDir&gt;/node_modules/", "^.+\\.(ios|android)\\.js$"],,但仍然没有按预期工作:S
      • 我不确定您的模式是否需要如此微调。你能简单地用 ["MyComp.android.js", "MyComp.ios.js"] 再试一次,让我知道这是否有效。
      • 我尝试使用完整的绝对路径,但它仍然显示来自 MyComp.ios.js 的错误堆栈...我认为问题更像是告诉 Jest 是否在导入时没有扩展名,解决带有.web.js 扩展名,然后是.js
      • 有趣。好的 - 两个问题: 1. 你用来运行测试的命令是什么?您是否通过npm 运行它们? 2:您的package.json 文件中还有其他 Jest 配置吗?甚至可以发布该文件的内容。
      • 我找到了原因……它在 jest 中预设了 jest-react-native,我将其替换为 "preset": "react-native" 并且它起作用了。现在我将外部化为几个 jest 配置文件并且效果很好,谢谢
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 2013-05-07
      • 2018-09-20
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多