如何从 create-react-app 测试中排除 node_modules?

Posted

技术标签:

【中文标题】如何从 create-react-app 测试中排除 node_modules?【英文标题】:How to exclude node_modules from create-react-app testing? 【发布时间】:2018-06-07 07:21:14 【问题描述】:

我想使用 jest 对我的 create-react-app 进行测试。

其中一个 node_modules 有测试错误,

但我不想开玩笑地使用 node_modules 文件夹。

在documentation 中,我找到了配置属性“collectCoverageFrom”并尝试在我的 package.json 中使用它:

  ....
  "scripts": 
        "start": "react-scripts start",
        "build": "react-scripts build",
        "test": "react-scripts test --env=jsdom ",
        "eject": "react-scripts eject"
  ,
  "jest": 
        "collectCoverageFrom": [
            "!/node_modules/*"
         ]
  

但没有任何改变。

【问题讨论】:

testpathignorepatterns. @Andy 开箱即用,Create React App 仅支持覆盖这些 Jest 选项: • collectCoverageFrom • coverageReporters • coverageThreshold • snapshotSerializers。 那么我很惊讶它没有忽略你的node_modules文件夹。 哦,它忽略了你的模块文件夹,但你的测试依赖于一些不能正常工作的东西。这是一个不同的问题。 它由 node_module 工作,我不想开玩笑地分析它( 【参考方案1】:

没有覆盖范围。

您的一个组件正在使用react-mic 包提供通过window.AudioContext 访问音频。

你有不同的方法来解决它。

    你可以模拟window.AudioContext。真的很难实现。我真的不建议你这样做。

    您可以mock react-mic module。这比 #1 更容易实现,但仍然相当困难。

    您可以在测试中依赖shallow()。所以你根本不需要模拟任何与音频相关的东西。我想建议你这样做。

【讨论】:

太奇怪了,在我的例子中,我从一个文件中测试了一个简单的打字稿函数,开玩笑告诉我一个错误Jest encountered an unexpected token,但是当我删除了一个与axios 相关的api函数并再次测试时。它像平静一样工作。【参考方案2】:

已经是这样了。开玩笑忽略了node_modules。你看到的只是一个堆栈跟踪。仔细检查您的测试代码,那里发生了错误。

【讨论】:

【参考方案3】:

在配置 jest 时尝试使用testPathIgnorePatterns

"jest": 
    ...
    "testPathIgnorePatterns": [
      "<rootDir>/(build|docs|node_modules)/"
    ]

【讨论】:

Krif Create React App 仅支持覆盖这些 Jest 选项: • collectCoverageFrom • coverageReporters • coverageThreshold • snapshotSerializers。 你试过了吗?我看不出为什么 Create React App 会受限于这些选项。 有详情:github.com/facebookincubator/create-react-app/blob/master/… create-react-app 限制我们使用此选项

以上是关于如何从 create-react-app 测试中排除 node_modules?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 create-react-app 测试中排除 node_modules?

从 sbt-native-packager 中的 Universal:packageBin 中排除非托管依赖项?

单元测试:为啥预期的参数总是在相等测试中排在第一位?

如何在 create-react-app 上调试 jest 单元测试?

如何使用 create-react-app 在 Jest 测试中忽略生成的 Relay 查询文件?

如何使用 create-react-app 提供 SSL 证书?