【问题标题】:Should I use both Cypress and Jest together?我应该同时使用 Cypress 和 Jest 吗?
【发布时间】:2021-05-18 21:49:46
【问题描述】:

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

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

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

【问题讨论】:

  • 它们是正交的。赛普拉斯使用浏览器。 Jest 使用假 DOM,不适合需要完全 DOM 支持的前端 e2e 或集成测试,除非与 Puppeteer 或其他方式一起使用。一旦你清楚地知道你正在编写什么样的测试,选择就很简单了。如果您在单元、e2e、集成等测试之间进行选择有困难,那么这就是需要首先解决的问题。

标签: vue.js jestjs cypress


【解决方案1】:

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

单元、集成或 E2E 测试

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

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

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

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

【讨论】:

  • 借助新的组件测试库,我可以看到 Cypress 取代了 Jest 来对您的组件进行单元测试。根据我看到的 Lachlan Miller 正在玩它的视频,它看起来足够活泼。
猜你喜欢
  • 2014-08-12
  • 1970-01-01
  • 2012-04-21
  • 2021-03-27
  • 2016-01-24
  • 2011-07-04
  • 2018-08-22
  • 2015-03-04
  • 1970-01-01
相关资源
最近更新 更多