了解 Jest 测试框架中的断言和期望

Jest 是一款流行的 JavaScript 测试框架,由于其易用性和功能丰富的特点,被广泛应用于前端开发中的单元测试。在 Jest 中,断言和期望是测试的核心,因此了解 Jest 中的断言和期望是非常重要的。

断言和期望

在 Jest 中,断言(assertions)是测试中的语句,用于判断函数或表达式的结果是否符合预期。而期望(expectations)则是对这个结果的期望,用于在测试中指定具体的预期结果。通常,我们会使用 expect 函数来创建一个期望对象:

-------- - -----------

在这个示例中,expect 函数的参数是两个数相加的结果,而 toBe 是期望结果为 2 的方法。如果计算结果确实是 2,那么测试就会通过。否则,就会抛出错误。

常用的期望方法

Jest 中有许多可用于设置期望的方法,其中一些最常用的有:

  • toEqual:用于比较两个对象的属性和值是否完全相等。在比较对象时,应该使用该方法,而不是 toBe
  • toBe:用于比较两个值是否完全相等,包括变量类型和值。
  • not:用于取反某个期望的结果。
  • toThrow:用于捕获和测试函数抛出的异常。

以下是一些基于上述方法的示例:

------------- -- -- -
  ----- --- - - - --
  --------------------
---

--------------- -- -- -
  ----- ---- - - ----- ------- --
  ----- ---- - - ----- ------- --
  ---------------------------
---

-------------- ----- -- -- -
  ----- -------- ----------- -
    ----- -------- - ----- ---------------------------------
    ----- ---- - ----- ----------------
    ------ -----
  -
  ----- ------------------------------------------
---

------------ -- -- -
  -------- ------------ -
    ----- --- ---------------
  -
  -----------------------------
---

断言的链式调用

Jest 还支持一种称为链式断言(chainable assertions)的语法,即将多个期望链接在一起使用。这种方法不仅简化了代码的编写和阅读,而且让错误提示更加直接和有用。下面是一个使用链式断言的示例:

-------------- -- -- -
  -------- ----------- -
    ------ ----------------- ------- ---- ----- - -------- ---- - ---
  -
  ------ -----------
    -------------- -- -
      ---------------------------------
        --------------------
        --------------------------
      ----------------------------------------------- ------
    ---
---

总结

断言和期望是 Jest 中重要的概念,也是前端开发中单元测试的核心。在开发过程中,应当熟悉 Jest 中的断言和期望,并合理使用链式断言和期望方法,以更好地帮助测试达到预期,并提高代码的健壮性。在应用中多加练习和实践,可以更好的掌握 Jest 中的断言和期望。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/651e9b0695b1f8cacd648f53


猜你喜欢

  • 利用 PM2 实现 Node.js 进程的自动重启

    Node.js 是一个非常受欢迎的后端开发语言,它的快速、高效和轻量级特性使得它在Web开发、大数据处理、网络编程等领域得到广泛应用。但是在开发Node.js应用过程中,由于一些意外情况,如代码出现错...

    1 年前
  • 如何使用 Fastify 框架构建 Websocket 应用?

    Websocket 已经成为现代 Web 应用中不可或缺的一部分,它可以实现双向通信,基于此可以实现诸如实时聊天室、实时数据监控和游戏等功能。Fastify 是一个高性能的 Node.js Web 框...

    1 年前
  • Mongoose 中如何使用 OpenAPI 和 Swagger 来生成 API 文档

    在前后端分离的项目中,接口文档对于开发效率和代码可读性都非常重要,而生成接口文档也是一项枯燥并容易出错的工作。本文将介绍如何在 Mongoose 中使用 OpenAPI 和 Swagger 自动生成 ...

    1 年前
  • Hapi 框架中使用 apidevtools/hapi-api-versioning 实现 API 版本控制

    随着 API 的不断升级和演进,我们需要一种方法来控制和管理 API 的版本。在 Hapi 框架中使用 apidevtools/hapi-api-versioning 插件可以轻松地实现 API 的版...

    1 年前
  • 实践 Custom Elements,打造前端可复用组件库

    Custom Elements 是 Web Components 技术中的一个核心概念,它允许我们创建自定义 HTML 元素,并在页面上使用它们。通过 Custom Elements,我们可以将一个复...

    1 年前
  • ES7 中新特性 BigInt 的应用解读

    介绍 BigInt 是 ES7 中新增的一种类型,它允许我们使用任意精度的整数,解决了 JavaScript 在处理大数时出现的精度问题。在旧版本中,JavaScript 只能处理 53 位精度内的整...

    1 年前
  • Docker 高级教程之组合命令:docker build,run,attach

    前言 Docker 是目前最流行的容器引擎之一,其轻量快速、可移植性好等特点受到广泛的认可。Docker 容器的便携性允许开发者将应用及其依赖打包到一个可移植的容器中,并可通过 Docker Hub ...

    1 年前
  • 解决 LESS 编译时遇到的 @import 语句异常问题

    在前端开发中,我们经常使用 LESS 来进行 CSS 预处理,但是在使用 LESS 编译器时,有时会遇到 @import 语句异常的问题,这个问题表现为 LESS 编译器无法正确读取和解析 @impo...

    1 年前
  • 解决在 Vue 项目中使用 GraphQL 时 "Cannot set property '$data' of undefined" 错误

    前言 GraphQL 是一种查询语言,它提供了强大的查询能力,让前端与后端的交互变得更加灵活和高效。在 Vue 项目中使用 GraphQL 也越来越普遍。然而,有时候在使用 GraphQL 时会遇到 ...

    1 年前
  • Webpack 与 React 开发环境:优化 CSS、JS 和图片加载

    在前端开发中,Webpack 是一款优秀的构建工具,能够帮助我们自动化地打包和优化代码,极大地提高前端开发效率。而在 React 开发中,Webpack 更是如虎添翼,可以将我们的 React 项目构...

    1 年前
  • Promise 中常见的错误类型及处理方法

    Promise 是 JavaScript 中处理异步操作的一种方法,可以将异步行为转化为类似同步行为的方式来写,非常便于代码的维护和开发。但是,在实际使用中,我们也会遇到一些 Promise 的错误,...

    1 年前
  • React Hooks 中 useReducer 的详解及使用场景

    随着 React Hooks 的推广和使用,useReducer 这个 Hooks 也逐渐成为了众多开发者优化 React 应用性能的利器。 useReducer 是什么 在 React 组件中,如果...

    1 年前
  • PostgreSQL 性能优化的几个技巧

    在前端开发中,数据库性能优化一直都是一个重要的话题。其中,PostgreSQL 作为一款强大的数据库系统,拥有灵活的数据模型、强大的功能以及优秀的性能。在使用 PostgreSQL 进行开发时,我们常...

    1 年前
  • Node.js 如何处理大文件上传?

    前言 在 web 应用开发中,文件上传是常见的功能。上传小文件很容易,但上传大文件需要考虑一些问题,如网络中断、上传速度过慢等现象。在本篇文章中,我们将介绍 Node.js 如何处理大文件上传,并提供...

    1 年前
  • Redis 应用实战:实现秒杀系统

    Redis 是一个高性能的内存数据库,其快速的读写性能、支持多种数据结构、丰富的功能和优秀的稳定性得到了广泛的认可与应用。在 Web 应用中,Redis 常被用来作为缓存、消息队列、数据存储等方面的支...

    1 年前
  • Redux 常见问题及解决方案总结

    Redux 是一个极为流行的状态管理库,被广泛应用于前端开发中。然而,Redux 的使用过程中,不可避免地会遇到各种问题。本文将总结一些 Redux 常见问题,并给出相应的解决方案及示例代码,希望能对...

    1 年前
  • 如何使用 Vue.js 构建企业级 SPA 项目?

    Vue.js 是当前前端开发中最为热门的框架之一,它提供了一些强大的功能,如组件化的开发思想、虚拟 DOM 等,以及它的数据绑定、指令和生命周期的 API。这些功能使得使用 Vue.js 开发企业级 ...

    1 年前
  • 在 WebSocket 未兼容的环境中使用 Server-Sent Events 进行实时通信

    在 WebSocket 未兼容的环境中使用 Server-Sent Events 进行实时通信 WebSocket 是一种 HTML5 新引入的通信协议,它能够在客户端和服务器端之间创建持久性连接,提...

    1 年前
  • 如何使用 ECMAScript 2017(ES8)中新增的 async/await 关键字和 Promise.all() 方法

    概述 在ES6中,引入Promise解决了JS异步编程的难题。ES8又新增了async/await和Promise.all(),进一步改善了异步编程体验。简单来说,async/await是一个基于Pr...

    1 年前
  • 学习 RxJS,从这里开始:入门基础

    RxJS,即 Reactive Extensions for JavaScript,是一种基于响应式编程思想的编程库,使用 RxJS 可以使异步和基于事件的程序更加简单和易于维护。

    1 年前

相关推荐

    暂无文章