我应该同时使用 Cypress 和 Jest 吗?

新手上路,请多包涵

我同时学习 Jest 和 Cypress。我知道他们不是直接竞争对手,因为 Cypress 专注于 E2E 而 Jest 专注于单元测试。目前,我已经在我的项目中实现了 Jest 和 Cypress,并进行了一些测试。

但实际上我可以在 Cypress 和 Jest 中测试大多数东西,而且我常常很难决定用什么来编写我的测试。与单个测试库相比,它也更难维护。

我想知道 - Cypress(或替代方案)和 Jest(或替代方案)一起使用的频率如何?使用两者真的是标准和良好做法吗?或者大多数开发人员/团队坚持使用单一的解决方案,这很好吗?

更新编辑:问这个问题已经很久了。我得到了评论中也提出的妥协。我正在使用 Cypress + 新的 Cypress 组件测试(所以没有 Jest),而不是仅使用 Cypress 或 Cypress + Jest。多亏了我拥有相同的库和断言(更易于管理),但可以同时测试 e2e 和组件。

原文由 norr 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 667
2 个回答

简短回答:在同一个代码库中使用 Jest 和 Cypress 是很常见的。

单元、集成或 E2E 测试

使用像 Vue 和 React 这样的组件库,集成和单元测试之间的界限可能会变得有点模糊。我们甚至可以对这两种情况使用相同的工具(Jest 和 Cypress),这让事情变得更加混乱。我建议您以测试“用户故事”为目标,换句话说,确保用户始终可以执行关键操作。例如:

  1. 用户可以填写并提交表格吗?
  2. 用户可以将产品添加到购物车吗?
  3. 汉堡菜单是否响应点击?

其中一些测试将涉及一个组件,另一些将涉及两个组件,还有一些将需要整个应用程序。由于快速反馈循环,我更喜欢使用 Jest 和 测试库 编写较小的测试(单元和集成)。我几乎可以同时开发和运行我的测试。

最终,您会遇到涉及太多移动部件(组件)的情况,以至于无法使用 Jest。这就是 Cypress 的亮点,它非常适合测试端到端的工作流程。

原文由 randyjp 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是一个老问题,但想进一步说明为什么要同时使用 Cypress 和 Jest。我在多个项目中都使用过。它们各自解决单独的测试问题:

笑话

用于运行单元测试。单元测试支持 业务逻辑,或者只是确保您的方法在许多不同情况下返回预期值。通常这些测试是针对服务中的方法,但不限于它们。

用于运行端到端或功能测试。 Cypress 专门用于通过与 UI 交互并对其进行断言来测试 UI 。对后端的调用通常是存根的,这意味着您可以控制测试中的响应,因为 Cypress 不是用于测试后端的。

Cypress 和 Jest 共同为前端提供了完整的测试解决方案。

原文由 inorganik 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题