如何在Jest上分离单元和集成/长时间运行的测试?

geo*_*a92 6 jestjs

目前,我有两个文件夹:__tests__用于单元(快速)测试和__integration__慢速测试.

然后,在package.json:

{
  "scripts": {
    "test": "jest",
    "test:integration": "jest -c '{}'",
    ...
  },
  "jest": {
    "testPathIgnorePatterns": ["/node_modules/", "__integration__"]
  }
}
Run Code Online (Sandbox Code Playgroud)

所以,当我想做TDD时,我正在运行npm test,当我想测试整个项目时,npm run test:integration.

由于Jest作为"无配置"测试框架提供,我在想是否有更好(或适当)的方式来配置它.

谢谢.

Rat*_*ica 9

引用这篇文章.

您可以尝试以下名称文件:

index.unit.test.jsapi.int.test.js

使用Jest的模式匹配功能,它也可以简单地单独运行它们.用于单元测试运行jest unit和集成测试运行jest int.

您可以根据您的偏好定义文件结构/位置,因为基于文件名的模式匹配是jest知道运行的方式.

另请参阅有关npm脚本的jest cli文档:

如果您运行Jest via npm test,您仍然可以通过插入--between npm test和Jest参数来使用命令行参数

  • 另外:如果您有名为`something.test.js` 的单元测试和名为`somethingElse.int.test.js` 的集成测试,您可以在单元测试运行中使用负向后视正则表达式排除集成测试:`jest ^( (?!\.int).)*$` (2认同)

Mic*_*ała 8

你试过jest --watchTDD 吗?它只运行与您的 git 更改相关的文件,首先运行错误并大量利用缓存来提高速度。

除此之外,jest -c 接受路径,而不是字符串。如果jest-integration-config.json位于项目的根目录中jest -c jest-integration-config.json,您应该很擅长.