运行 非交互模式下的 CRA Jest

Running CRA Jest in non-interactive mode

更新:我的用例主要是 运行 在 CI 进行测试,但覆盖默认的 CRA Jest 参数是我通常想知道的事情。


我正在 运行 使用 Jest, config that came with Create React App 进行测试。它始终以交互模式启动:

 › Press a to run all tests.
 › Press o to only run tests related to changed files.
 › Press p to filter by a filename regex pattern.
 › Press q to quit watch mode.
 › Press Enter to trigger a test run.

但我不希望它等待我的输入。我希望它 运行 一次然后终止。我尝试使用 --bail--no-watchman 开关,但它仍然以交互模式启动。

如果我全局安装 jest,并且 运行 它在我的项目的根目录下,它执行一次并完成(正如我想要的)。但是当我 运行 npm test which 运行s react-scripts test 时,即使我没有通过 --watch.

它也会进入监视模式

更新:我还在 CRA 上提交了一个问题。

你应该使用 Jests --watchAll=false flag.

例如:

npm test -- --watchAll=false

注意:这是为了react-scripts > 3.00

旧版本:

  • 反应脚本>= 2.1.4 < 3.00

对于非ci,例如运行ning本地测试,你可以传递一个--no-watch标志:

npm test --no-watch

  • 反应脚本<= 2.1.3

CRA 查找 CI 环境变量,如果它存在,则在监视模式下 运行 不存在。

CI=true npm test 应该能满足您的需求

User Guide -> Running Tests -> On your own environment

在您的 package.json 脚本中:

"test": "react-scripts test --watchAll=false"

npm test -- --watchAll=false

yarn test --watchAll=false

注:flag在react-scripts < 3.0中曾被称为--no-watchhttps://github.com/facebook/create-react-app/blob/3.x/CHANGELOG.md#remove---no-watch-flag

非交互式解决方案:

npm test a --watchAll=false

yarn test a --watchAll=false