在create-react-app中运行`npm test'时如何忽略某些文件?

时间:2019-04-11 12:35:01

标签: reactjs unit-testing npm create-react-app

当前npm test正在运行所有扩展名为.test.js的文件。我希望忽略某些文件。我在哪里配置该选项?我尝试过

 "jest": {
        "collectCoverageFrom": [
            "src/App.test.js"
        ]
    },

在package.json中。 我没什么区别。

2 个答案:

答案 0 :(得分:1)

Create React App仅允许您在 package.json 中覆盖以下Jest配置:

"jest": {
  "collectCoverageFrom": [],
  "coverageThreshold": {},
  "coverageReporters": [],
  "snapshotSerializers": []
}

https://facebook.github.io/create-react-app/docs/running-tests#configuration

解决方案1 ​​

弹出创建React App并使用testPathIgnorePatterns进行配置。

解决方案2

您仍然可以通过将--testPathIgnorePatterns选项传递给react-scripts test来覆盖Jest的配置。

例如:

"test": "react-scripts test --env=jsdom --testPathIgnorePatterns=src/ignoredDirectory",

答案 1 :(得分:0)

您可能想使用 testPathIgnorePatterns 作为 cli 参数,但请注意这会导致意外的副作用,因为它破坏了使用 npm test TestNamenpm test -- -t TestName 运行单个测试的能力。

这是因为,据我所知,testPathIgnorePatterns 非常贪婪,因为 testPathIgnorePatterns 参数之后的任何参数都将用作 testPathIgnorePatterns 的值。

例如:

如果我的 package.json 中有以下设置:

"test": "react-scripts test --testPathIgnorePatterns=e2e",

然后运行:npm test MyTest

那么得到的命令是:react-scripts test --testPathIgnorePatterns=e2e "App"

和 jest 将忽略 e2eApp

我发现的一种解决方法是不使用 testPathIgnorePatterns cli arg,而是使用 testMatch jest 配置。

假设我想忽略 e2e 目录中的所有文件,那么我可以使用以下正则表达式:

"testMatch": [
  "<rootDir>/src/(?!e2e)*/**/__tests__/**/*.{js,jsx,ts,tsx}",
  "<rootDir>/src/(?!e2e)*/**/*.{spec,test}.{js,jsx,ts,tsx}"
]

或者如果我只想在某个目录中包含测试,我可以使用:

"testMatch": [
  "<rootDir>/src/modules/**/__tests__/**/*.{js,jsx,ts,tsx}",
  "<rootDir>/src/modules/**/*.{spec,test}.{js,jsx,ts,tsx}"
]