type
Post
status
Draft
date
Apr 3, 2024
slug
Jest-intro
summary
一入测试深似海,本文介绍了Jest主要特点和基本的使用,以及一些的功能
tags
工作流
规范
测试
技术随笔
开发
category
浅笑编程边
icon
password
😀
Jest is a delightful javascript Testing Framework with a focus on simplicity It works with projects using: Babel, Ts, Node, React, Angular, Vue and more !
 
Jest 是一个流行的 JavaScript 测试框架,由 Facebook 开发并维护。它被设计为零配置,目标是提供一个简单、快速的单元测试解决方案。Jest 广泛用于 React 应用程序的测试,但它是一个通用的测试框架,可以用于测试任何 JavaScript 代码。它支持诸如模拟、快照测试和并行测试执行等高级功能。
 

📝 主旨内容

主要特点

  • 易于设置和使用:Jest 旨在提供零配置的测试体验,简化测试过程。
  • 内置模拟支持:易于模拟对象、导入依赖等,非常适合单元测试和组件测试。
  • 快照测试:快照功能允许开发者保存组件或数据结构的“快照”,并在后续测试中与新的输出进行比较。
  • 优异的性能:通过并行测试执行和智能测试运行来优化性能。
  • 丰富的断言库:提供广泛的断言方法,便于编写各种测试用例

Jest 丰富的断言库

When you're writing tests, you often need to check that values meet certain conditions. expect gives you access to a number of "matchers" that let you validate different things.
建议写jest断言,将gpt和文档结合起来看,单看文档会陷入‘旋涡’,单看gpt其实没有意义

快照测试

其实这个概念之前就看过了,只不过一直没来得及使用,现在重新看一遍
Jest 快照测试是 Jest 测试框架提供的一种非常有用的功能,旨在帮助开发者测试 UI 组件或其他数据结构的输出是否符合期望。快照测试通过比较组件或数据结构的当前渲染输出与之前保存的“快照”来工作。如果当前输出与快照不匹配,测试将失败,从而提醒开发者输出的变化可能是意外的或错误的。这种测试方式非常适合确保 UI 或数据不会无意中发生变化

快照测试的工作原理

当你第一次运行一个快照测试时,Jest 会自动创建一个快照文件,该文件包含了你的组件或数据结构的序列化输出。在后续的测试运行中,Jest 会将新的输出与存储的快照进行比较。如果输出发生变化,Jest 会标记测试为失败,并详细显示差异。这时,你可以检查变化是否为预期的:
  • 如果变化是预期的,你可以更新快照,使之包含新的输出。
  • 如果变化是意外的,你则需要检查代码中的问题。

简单示例

要在 Jest 中使用快照测试,首先确保你已经安装并配置了 Jest。然后,你可以在测试文件中使用expect(...).toMatchSnapshot()来执行快照测试。
以下是一个简单的示例:
在这个例子中,react-test-renderer 用于渲染 React 组件并将其转换为 JSON 格式。然后,使用 toMatchSnapshot 方法比较渲染的输出与存储的快照。
虽然快照测试非常强大,但它们也有局限性。它们并不能验证 UI 的功能性或交互性;它们只能确保输出没有意外变化。因此,快照测试最好与其他类型的测试(如单元测试和集成测试)结合使用,以提供更全面的测试覆盖率。此外,当 UI 经常变动时,频繁更新快照可能会增加维护成本。因此,合理地使用快照测试,并在适当的场景下将其与其他测试方法结合,可以最大化测试效率和效果。

🤗 总结归纳

享受你的测试之旅吧哈哈哈哈,如果使用vite构建你的项目,你也可以看看vitest哦,是另一种测试框架,写测试的话,强烈推荐webstorm编辑器,炒鸡友好!

📎 参考文章/链接

 
💡
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
  • Giscus
Zachary_Yang
Zachary_Yang
一个普通的干饭人🍚
Announcement
🎉欢迎来到我的博客🎉
-- 亲爱的读者们,你们好! ---
👏在这里,我希望能够和你们一起分享我对生活的观察、对技术的理解和热爱,暂将博客分为以下几个栏目👏
🌿 心绪漫卷边:一些小随笔
🌌 智绘非遇路:AI领域
😊 浅笑编程边:前后端开发
🛠 技术汇流石下:零散技术分享

祝好,
Zachary_Yang