如何在Yarn中不需要任何提示运行Jest测试?

14

我正在尝试在Team City中运行我的Jest单元测试,但我总是得到如下所示的提示。

No tests found related to files changed since last commit.
Press `a` to run all tests, or run Jest with `--watchAll`.

Watch Usage
 › Press a to run all tests.
 › Press f to run only failed tests.
 › Press p to filter by a filename regex pattern.
 › Press t to filter by a test name regex pattern.
 › Press q to quit watch mode.
 › Press Enter to trigger a test run.

我尝试运行yarn test a来运行所有测试。但是一旦测试完成执行,我仍然得到相同的提示。我尝试了yarn test a q,但那不起作用。我还尝试了yarn test a --forceExityarn test a --bail,但没有任何反应,我仍然会得到提示。如何在没有交互的情况下运行所有Jest测试,以便通过Team City运行?非常感谢您的帮助。

你尝试过传递 --ci 选项吗? - Senior Pomidor
@SeniorPomidor 我尝试了 "yarn test --ci" 和 "yarn test a --ci" 但它们都没有起作用 :( - AnOldSoul
哦,yarn... 尝试使用 --silent - Senior Pomidor
还是没有成功,收到了相同的提示。我猜我得在我的package.json中添加ci true这个东西。因为那样可以解决问题。 - AnOldSoul
哦,很高兴能帮助你。就像我说的,改变 package.json 是另一种解决方案。 - Senior Pomidor
4个回答

12
--ci
当提供此选项时,Jest 将假定它正在运行于 CI 环境中。当遇到新的快照时,这会改变其行为。而不是自动存储一个新的快照,它将失败测试并要求使用 --updateSnapshot 运行 Jest。link 另外,您可以更改 package.json 的内容:
"test": "CI=true react-scripts test --env=jsdom",

很好用。

您的另一个选项是像任何其他变量一样在命令中设置CI:

CI=true yarn test

5
我尝试了"yarn test --ci"和"yarn test a --ci",但我仍然得到相同的提示。是否有其他方法可以解决问题,而不需要对package json进行任何更改? - AnOldSoul

4
在TeamCity中,编辑您的配置设置,然后在侧栏中选择参数
单击添加新参数,在弹出的对话框中,在类型:下选择环境变量(env.)
将名称设置为env.CI,将值设置为true。单击保存
下次运行构建时,您的构建应该自动运行测试并继续进行。
如果您是管理员,则可以获得额外的积分,进入管理,然后在项目下编辑<根项目>。在侧边栏中单击参数,并将env.CI参数设置为true,这样您就不必为未来的项目设置此参数。

2

以下命令对我有效。

  • CI=true yarn test

请提供一个解释。请参阅如何回答 - tomasantunes

2
yarn test --coverage

只运行一次(带覆盖率),成功时返回0,失败时返回1。最初的回答。

3
如果自上次提交以来没有更改过文件,这仍会导致命令挂起。不同之处在于它将在项目下创建一个名为“coverage”的文件夹,并打印更多信息。 - Michael Gates
这对我不起作用! - Hafiz Temuri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接