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

问题描述 投票:0回答:3

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

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

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

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

vue.js jestjs cypress
3个回答
98
投票

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

单元、集成或端到端测试

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

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

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

最终,您会遇到涉及大量移动部件(组件)的情况,而使用 Jest 不是一个选择。这就是 Cypress 的闪光点,它非常适合测试您的端到端工作流程。


16
投票

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

开玩笑

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

柏树

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

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


5
投票
我使用 cypress 进行 e2e 测试和组件测试。我用柏树测试了这些类型的行为。我开玩笑地做单元测试。我用玩笑在前端测试逻辑/业务逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.