在非交互模式下运行CRA Jest


73

更新:我的用例主要是在CI上运行测试,但是我通常想知道重写默认的CRA Jest参数。


我正在使用Create React App附带的Jest配置运行测试。它总是启动为交互模式:

 › 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.

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

如果我全局安装jest,并在项目的根目录中运行它,它将执行一次并完成(就如我所愿)。但是当我跑步时npm testreact-scripts test即使我没有过去,它也会进入监视模式--watch

更新:我也对CRA提出了问题。

Answers:


107

您应该使用Jests--watchAll=false标志

例如:

npm test -- --watchAll=false

注意:这是针对react-scripts> 3.00

对于旧版本:

  • 反应脚本 >= 2.1.4 < 3.00

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

npm test --no-watch

  • 反应脚本 <= 2.1.3

CRA寻找一个CI环境变量(如果存在),它不在监视模式下运行。

CI=true npm test 应该做你想要的

请参阅用户指南->运行测试->在您自己的环境中


是的,就此问题而言,没有更简单的方法:github.com/facebookincubator/create-react-app/issues/784
AlexStack 2016年

1
这对我而言在react-scripts 3.2.0上没有什么区别;不起作用。
PlexQ

3
现在看起来像--watchAll = false
WayneC '19

1
正如其他答案之一已经指出的那样……实际上应该是 npm test -- --watchAll=false
Jeffrey Van Alstine

1
我更像是一个普通的webpack入门者,当我开始工作一个继承的react-scripts生成的项目时,我很难使脚本自动启动和停止。这杀死了我的CI管道。这是一个巨大的帮助。
PAT-O-MATION


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.