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

nor*_*orr 5 vue.js jestjs cypress

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

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

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

ino*_*nik 12

这是一个老问题,但想要更清楚地说明为什么要同时使用 Cypress 和 Jest。我在多个项目中都使用过这两种方法。它们各自解决不同的测试问题:

笑话

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

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

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


ran*_*yjp 9

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

单元、集成或 E2E 测试

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

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

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

最终,您会遇到涉及许多移动部件(组件)的情况,以至于不能选择使用 Jest。这就是赛普拉斯的亮点,它非常适合测试您的端到端工作流程。

  • 通过新的组件测试库,我可以看到 Cypress 也取代了 Jest,以对组件进行单元测试。根据我看过的拉克兰·米勒 (Lachlan Miller) 玩它的视频,它看起来足够敏捷。 (20认同)