更新:我的用例主要是在CI上运行测试,但是覆盖默认的CRA Jest参数是我一般想知道的。
我正在使用Jest附带的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
运行react-scripts test
时,即使我没有通过--watch
,它也会进入监视模式。
更新:我还在CRA上提交了一个问题。
答案 0 :(得分:45)
CRA会查找CI
环境变量,如果它存在,则它不会以监视模式运行。
CI=true npm test
应该做你想要的事情
请参阅User Guide -> Running Tests -> On your own environment
<强>更新强>
对于非ci,例如在本地运行测试,从react-scripts@2.1.4
您可以传递--no-watch
标志:
npm test --no-watch
答案 1 :(得分:7)
在您的package.json
脚本中:
"test": "react-scripts test --watchAll=false"
或npm test -- --watchAll=false
或yarn test --watchAll=false
注意:该标志曾经被称为--no-watch
答案 2 :(得分:0)
非交互式解决方案:
npm test a --watchAll=false
或
yarn test a --watchAll=false